/**
* 封装 jsonp
*/
function jsonPRequest(url, params){
return new Promise(resolve => {
// 随机生成一个函数名
const funcName = `__callback__${Math.random().toString(36).slice(2)}__${Date.now()}`;
// 设置为全局函数
window[funcName] = function(resp){
resolve(resp);
};
// 创建一个 script 标签
const script = document.createElement('script');
// 多个参数进行拼接
let paramStr = '';
for (var arr in params) {
paramStr += '&' + arr + '=' + params[arr];
}
// 给 script 中的 src 属性赋值
script.src = url + '?callback=' + funcName + paramStr;
// 插入到 body 中
document.body.appendChild(script);
// 等 script 标签加载完之后,清除标签和全局函数
script.onload = function() {
document.body.removeChild(script);
delete window[funcName];
}
});
}
// 调用
jsonPRequest('http://localhost:9527/jsonp', {
a: 1,
b: 2,
c: 3
}).then(resp => {
console.log('promise 完成:', resp);
})
JS 封装 jsonp
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- //封装JSONP function creatScriptTag(scrSring){ var script =...
- jsonp作为前端跨域的一种解决方案,不用像配置nginx那样做一系列的反向代理转发,返回的数据结构也比较严谨,使...