每次遇到跨域的问题真是!@#¥%
我对JSONP
的一些浅显的理解就是,有时候会看到类似http://xxx.xx.com/?callback=xxx
这样的请求(callback=
也可能是jsonp=
也可能是jsonpcallback=
,这个取决于服务器端是怎么实现 jsonp 的),这样的请求做的事情简单的来说就是等得到所有数据之后就执行回调函数。
由于这个回调函数已经发给了服务器,返回的结果其实是一个函数,函数的入参是获取的数据。
jQuery 的 ajax 请求其实能很简单的在客户端进行跨域 GET 请求,具体如下:
js
var options = {url: 'http://xx.xx.com/xxx',method: 'GET',dataType: 'jsonp',//jsonp: 'callback',success: function (data) {//do something here;},};$.ajax(options);
其中需要注意的是,一定要声明dataType
,然后把回调函数写在 success 后面就可以了。
另外一开始提到,服务器端对 jsonp 的实现可能不同,所以在options
中,有时候需要声明jsonp
对应的字符串,默认是"callback"
。例如:如果服务器实现 jsonp 是通过http://xxx.xx.com/?jsonpcallback=xxx
,那么就需要在options
中声明jsonp:'jsonpcallback'
原理据说和<script src="...">
差不多,我现在还不是很明白=,=