javascript原生JSONP的函数封装
为了解决跨域问题,程序猿们可真是绞尽脑汁,JSONP的核心点在我刚刚接触的时候感觉惊奇,关于跨域问题请看我的其他博客
JSONP的核心点就是通过标签的src属性不会产生跨域问题来解决请求资源的行为
function JsonP(options){
let {url,data,success} = options;
data = data || {};
let str = '';
for(let i in data){
str += `${i}=${data[i]}&`;
}
let script = document.createElement('script');
script.src = url + '?' + str;
window[data[data.funName]] = function(resopnse){
success(resopnse);
}
}
通过在函数中对window对象设置一个全局的方法,用来接收后端返回的数据,该方法的名字和后端返回的函数名都是在函数的参数中规定好了的
并且前端需要发送函数名到后端,后端再将请求到的数据连同函数名拼接后返回到前端页面,就会在前端将语句解析成js代码,这样整个的JSONP的传递流程完成
JSONP方法固然巧妙,但是安全性较低,其次开发代价大,需要前后端的配合才能完成,个人不建议使用,比较麻烦