加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:11:54 所属栏目:百科 来源:网络整理
导读:;(function(){varformatParams=function(data){//格式化参数vararr=[];for(varnameindata){arr.push(encodeURIComponent(name)+'='+encodeURIComponent(data[name]));}returnarr.join('');}varjsonp=function(options){options=options||{};if(!options.url|
;(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读