封装一个JSONP请求

首先,先介绍下jsonp的跨域原理:

1、 动态创建script标签
2、 利用 script 的src属性,会自动发送请求
3、 只需要将要请求的地址设置为 script标签的src属性的值
4、 需要服务端的接口配合,必须返回 JSONP 格式的数据才行

注意:
1、 需要有个支持 JSONP 请求的接口地址
2、 我们指定回调函数的名称
3、 我们写一个 与回调函数名称 相同的函数
4、 通过这个函数的参数就可以获取到服务器返回的数据了!!!
5、 这个函数只能写在全局环境中!!
 1 function jsonp(url, params, callback) {
 2             url += '?';
 3 
 4             for(var k in params) {
 5                 url += k + '=' + params[k] + '&'
 6             }
 7 
 8             // 随机生成一个不重复的函数名
 9             var callbackName = ‘ivy_' + (new Date - 0);
10             url += 'callback=' + callbackName;
11             // 根据生成的函数名,让这个函数称为一个全局函数
12             window[callbackName] = function( data ) {
13                 // console.log( data );
14                 callback( data );
15 
16                 // 获取到数据后,就可以将script标签以及函数都销毁掉
17                 document.head.removeChild( script );
18                 delete window[callbackName];
19             };
20 
21             // 动态创建script
22             // 浏览器会自动发送请求,请求接口
23             var script = document.createElement('script');
24             script.src = url;
25             document.head.appendChild( script );
26 
27         }

 

转载于:https://www.cnblogs.com/tangting/p/6537613.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值