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">
var url = "http://localhost:3956/text/AJAX.aspx?callback=?";
$.getJSON(url, function (aa) {
alert(aa.my_tags);
})
});
</script>
cs页面中
public string cb;
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一样的效果
此文只是用于记住所犯之错.代码居多..