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

前端之家收集整理的这篇文章主要介绍了网上收集修改的原生jsonp代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
;(function(){
varformatParams=function(data){//格式化参数
vararr=[];
for(varnameindata){
arr.push(encodeURIComponent(name)+'='+encodeURIComponent(data[name]));
}
returnarr.join('&');
}
varjsonp=function(options){
options=options||{};
if(!options.url||!options.callback){
thrownewError("参数不合法");
}

//创建script标签并加入到页面中
varcallbackName=('jsonp_'+Math.random()).replace(".","");
varoHead=document.getElementsByTagName('head')[0];
varparams="";
if(options.data){
options.data[options.callback]=callbackName;
params+=formatParams(options.data);
}else{
params+=options.callback+"="+callbackName;
}
varoS=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

原文链接:https://www.f2er.com/json/289965.html

猜你在找的Json相关文章