JSONP方法簡單封裝

    function myJsonp(url, data, callback) {

        //參數判斷
        if (Object.prototype.toString.call(data) == "[object Function]") {
            callback = data;
            data = undefined;
        }

        //設置回調函數隨機名稱
        var cbFnName = "cb_" + Math.floor(Math.random() * 123456789).toString(32);
        this[cbFnName] = callback;

        //將data對象格式轉換爲aaa=bbb&ccc=ddd格式
        var stringIfyData = data != undefined ? Object.keys(data).map(function (key) {
            return encodeURIComponent(key) + "=" + encodeURIComponent(data[key]);
        }).join("&") + "&" : "";

        //生成script標籤
        var scriptElement = document.createElement("script");
        scriptElement.src = url + (url.indexOf('?') > -1 ? '&' : '?') + stringIfyData + "callback=" + cbFnName;
        document.body.appendChild(scriptElement);
    }

    //調用豆瓣api-三個參數
    myJsonp("http://api.douban.com/v2/movie/top250", {name: "leyi"}, function (rps) {
        console.info("rps", rps);
    });

    //調用豆瓣api-兩個參數
    myJsonp("http://api.douban.com/v2/movie/top250", function (rps) {
        console.info("rps", rps);
    });

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章