网上收集修改的原生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

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...