原生JS简单封装JSONP跨域获取数据

2021-03-13 11:36

阅读:388

标签:接受   jsonp   链接   span   因此   erro   ons   error   ==   

用原生JS封装一个简单的JSONP,主要是用来理解前端是怎么实现JSONP的。

 

JSONP跨域是借助

将跨域请求的链接和参数以链接的方式提交给服务器,同时在链接中附带本地接收JSONP数据函数的函数名,当服务器查找数据完毕后,调用该函数,并将数据以函数参数形式传出。

 

首先,使用使用JSONP跨域,不是直接返回一个数据对象,而是本地向服务器提供一个可供调用的函数fn,由服务器调用,并跨域请求的数据对象注入fn的参数。也就是说,跨域请求数据,是将本地用来接受JSONP数据对象的函数的函数名提交给服务器,由服务器来调用。

其次,因为网页中会频繁使用到JSONP,本地用来接收JSONP数据的函数将会有很多,从而导致代码冗余,占用资源。

因此,采取以下方法接收JSONP跨域请求得到的数据:

1、在封装函数Fun中随机生成一个变量名fn;

2、将fn保存为封装函数Fun的属性(即:Fun[fn]),或者window的全局属性;

3、将fn提交给服务器做为本地接收JSONP函数的函数名;

4、定义本地接收JSONP数据的匿名函数,并将匿名函数赋值给封装函数Fun的属性fn(Fun[fn] = function(data){...});

5、将匿名函数中接收到的data传出,或在匿名函数中调用封装函数传入的回调函数(如果有的话);

6、删除Fun[fn]属性,也就是销毁接收函数。

这样,既解决本地用来接收JSONP是提供的回调函数容易重名,又在每次执行完成后销毁回调函数减少代码冗余。

 1 

 

原生JS简单封装JSONP跨域获取数据

标签:接受   jsonp   链接   span   因此   erro   ons   error   ==   

原文地址:https://www.cnblogs.com/walker-cheng/p/12819951.html


评论


亲,登录后才可以留言!