JSONP

Posted 大黑ylx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSONP相关的知识,希望对你有一定的参考价值。

JSONP主要是用来解决跨域问题,原理是动态插入script标签。ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务器不再返回JSON的脚本数据,而是返回一段调用某个函数的js代码,在src中进行调用,这样实现了跨域。JSONP的局限是:script.src 后台不配合得不到数据返回。

JSONP函数代码如下:

 1 function mycallback(data) {
 2     console.log(data);
 3 }
 4 function jsonp(url , data , callback) {
 5     if(typeof data == ‘string‘){
 6         callback = data;
 7         data = {};
 8     }
 9     var hasParams = url.indexOf(‘?‘);
10     url += (hasParams ? ‘&‘:‘?‘) + ‘callback=‘+callback;
11     var params ="";
12     for(var key in data){
13         params += ‘&‘+key+‘=‘+data[key];
14     }
15     url+=params;
16     var script = document.createElement(‘script‘);
17     script.setAttribute(‘src‘,url);
18     document.getElementsByTagName(‘body‘)[0].appendChild(script);
19 }
20 jsonp(‘http://baidu.com‘,{id:34},‘myCallback‘);

 

以上是关于JSONP的主要内容,如果未能解决你的问题,请参考以下文章

JSONP原理及代码简单实现

如何发出 jsonp 请求

跨域解决方案 - JSONP

JSONP 和反对这个

JSONP回调不起作用

JSONP