【跨域】封装一个JSONP方法
2021-05-21 本文已影响0人
Adder
/**
*封装之后的jsonp
* @param {请求资源地址} url
*/
function getJsonP(url) {
return new Promise((resolve, reject)=> {
const randomName = 'lucyJsonpFunctionName' + Math.random()
window[randomName] = (data) => {
resolve(data)
}
const script = document.createElement('script')
// callback是前后端程序员默认使用的名称
script.src = `${url}?callback=${randomName}`;
script.onload = () => {
//防止多个script标签,导致代码冗余
script.remove()
}
script.onerror = () => {
reject()
}
document.body.appendChild(script)
});
}
getJsonP('http://qq.com:8888/friends.js').then((response) => {
console.log(response)
})