浏览器因为安全问题而有一个同源策略,不允许跨域请求数据。但是 js 脚本资源和图片资源还是被允许跨域请求的。在 web 开发中,遇到要跨域请求 json 数据时,可以用 jsonp 的方式来绕过浏览器的同源策略。
现在,已经有很多工具将 jsonp 封装,如 jquery ,vue 等等。
那么封装起来的 ajxa 做了什么呢,个人认为主要有以下:
0、创建一个回调函数。有以下代码类似功能。
function callback (str){ return JSON.parse(str); }
1、动态创建一个 script 标签,其中 src 中 query 部分告诉服务器自己要请求的数据以及回调函数的名字。
2、脚本返回后立即执行回调函数,该函数所携带的参数就是我们请求的数据。
// 后台返回的内容 callback({code:0});
3、删除创建的 script 标签。
4、删除创建的回调函数。