首页 > 代码库 > 网上收集修改的原生jsonp代码
网上收集修改的原生jsonp代码
;(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代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。