$.getJSON()跨域请求
什么是跨域
因为javascript同源策略的限制,a.com 域名下的js脚本无法操作b.com或是c.a.com域名下的对象.Ajax的应用中,由于安全的问题,浏览器默认是不支持javascript跨域调用的.
- 主域相同,子域不同,如
xxx.aaa.com
和yyy.aaa.com
- 域名相同,端口不同,如
xxx.aaa.com:8000
和xxx.aaa.com
- 域名相同,协议不同,如
http://www.aaa.com/
和https://www.aaa.com/
- 主机相同,用ip和域名的
http://127.0.0.1/
和http://localhost/
都是会造成跨域的。网上有很多解决办法,下面介绍使用JQuery的getJSON方法处理跨域问题.
同一域名下$.getJSON()请求
js:
var url="http://localhost:2589/a.ashx";
$(function(){
$.getJSON(url,function(data){
alert (data.Name);
})
});
服务器返回字符串:
{"Name":"loogn","Age":23}
不同域名下$.getJSON()请求
js:
var url="http://localhost:2589/a.ashx?callback=?";
$(function(){
$.getJSON(url,function(data){
alert (data.Name);
})
});
服务器返回字符串:
jQuery1706543070425920333_1324445763158({"Name":"loogn","Age":23})
$.getJSON()
跨域请求时的参数名callback
也可换成jsoncallback
,jsoncallback
应该优先检测,没有再检测callback
(没测试!!)
?
也可是具体的函数名,这样回调函数就不能是匿名的了,用?
生成只是jQuery为我们的一般操作提供的一个便利。