码迷,mamicode.com
首页 > Web开发 > 详细

网上收集修改的原生jsonp代码

时间:2014-12-04 18:18:55      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   os   sp   java   for   on   art   

;(function(){
    var formatParams = function(data) {//格式化参数
        var arr = [];
        for (var name in data) {
            arr.push(encodeURIComponent(name) + ‘=‘ + encodeURIComponent(data[name]));
        }
        return arr.join(‘&‘);
    }
    var jsonp = function(options) {
        options = options || {};
        if (!options.url || !options.callback) {
            throw new Error("参数不合法");
        }

        //创建 script 标签并加入到页面中
        var callbackName = (‘jsonp_‘ + Math.random()).replace(".", "");
        var oHead = document.getElementsByTagName(‘head‘)[0];
        var params = "";
        if(options.data){
            options.data[options.callback] = callbackName;
            params += formatParams(options.data);
        }else{
            params+=options.callback+"="+callbackName;
        }
        var oS = document.createElement(‘script‘);
        oHead.appendChild(oS);

        //创建jsonp回调函数
        window[callbackName] = function (json) {
            oHead.removeChild(oS);
            clearTimeout(oS.timer);
            window[callbackName] = null;
            options.success && options.success(json);
        };

        //发送请求
        oS.src = options.url + ‘?‘ + params;

        //超时处理
        if (options.time) {
            oS.timer = setTimeout(function () {
                window[callbackName] = null;
                oHead.removeChild(oS);
                options.fail && options.fail({ message: "超时" });
            }, options.time);
        }
    };
    window.jsonp = jsonp;
})();
//调用方法
/*jsonp({
    url:"http://www.baidu.com",
    callback:"callback",   //跟后台协商的接收回调名
    data:{id:"1000120"},
    success:function(json){
        alert("jsonp_ok");
    },
    fail:function(){
        alert("fail");
    },
    time:10000
})*/

原文链接:http://www.html-js.com/article/JavaScript-based-implementation-of-AJAX-JSONP-and-native-JS-DOM-finishes-loading-events

网上收集修改的原生jsonp代码

标签:http   io   ar   os   sp   java   for   on   art   

原文地址:http://my.oschina.net/wbo0801/blog/352348

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!