跨域:
为js同源策略的限制,a.com 域名下的js脚本无法操作b.com或是c.a.com域名下的对象。  

 ajax的应用中,由于安全的问题,浏览器默认是不支持js跨域调用的。  

1.主域相同,子域不同,如xxx.aaa.com和yyy.aaa.com  

2.域名相同,端口不同,如xxx.aaa.com:8000和xxx.aaa.com  

3.域名相同,协议不同,如http://www.aaa.com/和https://www.aaa.com/  

4.主机相同,用ip和域名的,http://127.0.0.1/和http://localhost/  

都是会造成跨域的。

 

 

 使用jq的getJSON实现跨域实例

 

 

例如:http://localhost:5540/test/aaa.aspx 调用 http://localhost:3956/text/AJAX.aspx里面的json

 

 

/*http://localhost:5540/test/aaa.aspx*/ 

 <script type="text/javascript">

    $("#images").click(function () {
        var url = "http://localhost:3956/text/AJAX.aspx?callback=?";
       
        $.getJSON(url, function (aa) {
            alert(aa.my_tags);
        
        })
    });
</script>

 

 

 http://localhost:3956/text/AJAX.aspx

 cs页面中

 public string cb;

cb = Context.Request["callback"];

  

 aspx页面显示

 <%=cb%>({"my_tags":["美国","成长","魔幻","奇幻","青春","动作","惊悚","内地","悬疑","动画","3D"],"html":"my html","interest_status":"","popular_tags":["美国","爱情","喜剧","同意翻译成炮友","2011","轻喜剧","搞笑","浪漫","生活","剧情"],"tags":[]})  

 

以前不知道直接在aspx页面显示{"my_tags":["美国"]["青春"]["动作"]["惊悚"]}

导致出各种错误 抱 以下错误

 

不知道原因.. 现在知道了...记住所犯之错..加以谨记...

 

原来这个方式的跨域是jsonp跨域..

 

jsonp是先构造一个方法 比如 fun12321312 这个方法会调用你之前写好的回调函数, 把跨域的url 和这个方法名 以 <script src="{你的url}?callback=fun123">方式添加到head中,浏览器是允许这种方式加载js的 加载完成后就调用fun12321312 ()参数就是你原来的json,就达到了返回json一样的效果

 

 此文只是用于记住所犯之错.代码居多..

 

 

 

 

posted on 2011-12-28 17:05  n泛泛之交w  阅读(731)  评论(0编辑  收藏  举报