查看手册,我们看到,jquery写jsonp有两种方式:
1$.ajax的方式
2$.getJSON的方式
先来看第一种方式:
(1)http://a.com/index.html代码如下:
其中几个参数需要说明下:
type:代表请求提交的方式
async:是否同步
url:请求地址
dataType:请求的数据类型,是使用jsonp这种跨数据访问协议的json数据格式还是用其他的数据格式
jsonp:有了这个参数,那么实际请求的url地址会变成http://b.com/index.php?callback=?,如果jsonp设置为test111,那么请求地址就是http://b.com/index.php?test111=?
jsonpCallback:定义回调函数的名称,和上面的参数jsonp一起使用,如果这个参数为myCallback,请求的地址会变成http://b.com/index.php?callback=myCallback,另外值得注意的是,如果这个值为空的话,那么jquery会默认随机生成一个函数名传过去,那么实际请求的地址就是:http://b.com/index.php?callback=jquery12253158788754457。
success:请求响应成功的回调
error:请求响应失败的回调
(2)http://b.com/index.php代码如下:
(3)请求http://a.com/index.html页面得到如下内容:
如此,我们便使用jquery的写法实现了jsonp跨域访问其他站点数据。
下面我们来看看第二种方式,第二种方式相对简单一点:
(1)http://a.com/index.html代码如下:
(2)http://b.com/index.php代码如下:
(3)请求http://a.com/index.html页面得到如下内容:
$.getJSON一共有3个参数:
url:发送请求地址,上图中http://b.com/index.php?myCallback=?,myCallback后面的值为问号的话,jquery会默认传一个随机的回调函数名称。
data:待发送 Key/value 参数。
callback:载入成功时回调函数。
以上就是jsonp跨域请求数据的两种jquery写法。