用 JQUERY 的 JSONP 支持 AJAX 跨域

jquery的$.getJson 方法是支持跨域的

页面请求:

$.getJSON(url+'?callback=?',{operate:'add'}, function (res){
});

其实就是$.ajax的又一个封装

$.ajax({
type:'get',
url:url,
data:{},
dataType:'jsonp',
callback:'json_callback',
success:function(res){}
})

服务器php:

$callback=$_GET['callback'];
print_r("$callback({key:\"value\"});");

原理:

需要传一个callback的回调函数名到服务器端,服务器端拿到这个回调函数名,再将返回数据用参数的形式反回到客户端,这样客户端就能够调到。

callback=?就是不指定回调函数名,jquery会自动生成一个,类似这样:jsonp12148037045654,用firebug可以查看。

服务器端拿到这个callback的返回格式就是 jsonp12148037045654({operate:’add’}); 像不像一个函数的定义。

使用$.ajax,指定callback参数,就相当于自定义了这个callback为“json_callback”,不需要jquery自动生成。

ajax 跨域请求是不支持post的,切记。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据