美文网首页
【跨域】封装一个JSONP方法

【跨域】封装一个JSONP方法

作者: Adder | 来源:发表于2021-05-21 15:26 被阅读0次
    /**
     *封装之后的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)
    })
    

    相关文章

      网友评论

          本文标题:【跨域】封装一个JSONP方法

          本文链接:https://www.haomeiwen.com/subject/mnpwjltx.html