;(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 })*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。