什么是jsonp
JSONP(JSON with Padding)是JSON的一种“使用模式”,是一种非官方跨域数据交互协议,可用于解决主流浏览器的跨域数据访问的问题。用 JSONP 抓到的资料并不是 JSON,而是任意的填充JSON数据的JavaScript。
为什么要使用jsonp
1.Ajax直接请求普通文件存在跨域无权限访问的问题
2.web页面上调用js文件时不受是否跨域的影响,凡是有src属性的标签,都具有跨域的能力
3.当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理
4.JSON可以简洁的描述复杂数据,还被js原生支持
如何使用jsonp
1.在客户端写好回调函数,并且将回调函数的名称连同其他需要的参数名拼接在域名后面,填入src
2.服务端接收到请求,将数据进行解析,并将JSON数据填入回调函数的参数列表中,返回给客户端
3.客户端收到服务端的响应,执行函数,执行完毕将script代码块清除
4.设置超时处理,如果script请求超时,那么将函数清除。
封装好的jsonp代码
function jsonp(url,params,callback,time){
//构造一个函数到window上
var body = document.body;
var fnName = &