美文网首页
封装自己的Jsonp函数

封装自己的Jsonp函数

作者: 過尽千帆_YL | 来源:发表于2021-05-14 22:12 被阅读0次

    1. jsonp的实现原理:

    //利用script的src属性 src=url+'?'+参数+callback
    
    /**
     *  @param {url} url请求地址
     *  @param {data} data请求参数
     *  @param {success} 回调函数
     **/
    

    2. 将对象转换成查询字符串

    function paramsObj(data) {
        var arr = []
        // k是属性  data是数组
        for (var k in data) {
            // data[k]数组中相对应的属性值
            arr.push(k + '=' + data[k])
        }
        return arr.join('&') // 将数组转成字符串并以&分隔
    }
    

    3. 定义 myJsonp 函数

    function myJsonp(options) {
        // 1. 动态创建script标签
        var script = document.createElement('script')
        // 将数据对象转换成查询字符串
        options.data = paramsObj(options.data)
        // 1.1 动态创建函数名字 Math.random() 生成随机数   toString()转为字符串  substr(2) 进行字符串的截取
        var fnName = 'myJsonp' + Math.random().toString().substr(2)
        // 1.3**** 将函数名动态的添加到全局里面
        // window[fnNanme] window里面的对象
        window[fnName] = function (res) {
            // 1.5 接收数据结束后删除script标签
            document.head.removeChild(script)
            delete window[fnName]
            // 1.4  回调 options.success 函数
            options.success && options.success(res)
        }
    
    

    4. 给src属性设置值

        script.src = options.url + '?' + options.data + '&callback' + fnName;
        document.head.appendChild(script)
    }
    

    相关文章

      网友评论

          本文标题:封装自己的Jsonp函数

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