JSONP的请求过程:
请求阶段:浏览器创建一个 script 标签,并给其src 赋值。
发送请求:当给script的src赋值时,浏览器就会发起一个请求。
数据响应:服务端将要返回的数据作为参数和函数名称拼接在一起(格式类似”jsonpCallback({name: 'abc'})”)返回。当浏览器接收到了响应数据,由于发起请求的是 script,所以相当于直接调用 jsonpCallback 方法,并且传入了一个参数。
注:由于使用的是script标签的src属性,所以只支持get方法 服务器返回数据 callback([ { "logo":"img-1.png", "title":"标题1" }, { "logo":"img-2.png", "title":"标题2" }, { "logo":"img-3.png", "title":"标题3" }, { "logo":"img-4.png", "title":"标题4" } ]) 原生JS实现方式 function jsonp(req){ var script = document.createElement("script"); script.setAttribute("src", req.url+"?param="+req.callback.name); document.body.appendChild(script); } function callback(res){ console.log(res); } jsonp({ url: '', callback: callback }) JQuery实现方式 function callback(res){ console.log(res); } $.ajax({ url: '', type: 'GET', dataType:'jsonp', jsonp:'callback', jsonpCallback:'callback', success: function (res) { console.log(res); } });