js技术:该函数返回ajax需要的关键对象:xmlhttprequest


//该函数返回ajax需要的关键对象:xmlhttprequest
function getTransport(){
   
var versions=[
       
function(){
           
return new XMLHttpRequest();
        },
       
function(){
           
return new ActiveXObject('Microsoft.XMLHTTP');
        }
    ];
   
var request;
   
for(var i=0;i<versions.length;i++){
       
var lambda=versions[i];
       
try{
            request
=lambda();
        }
       
catch(e){}     
    }
   
return request;
}

function ajaxRequest(url,options){
   
var request=getTransport();//创建ajax的关键对象xmlhttprequest
    if(typeof(request)=='undefined'){//判断创建是否成功
        throw new Error('你的浏览器不支持xmlhttprequest');
       
return ;
    }
   
var url=url;//获取请求地址
   
   
//获取请求方式,如果为获取到,返回默认值POST
    var method=(options.method||'POST').toUpperCase();
   
if(method!='GET'&&method!='POST'){
        method
='POST';
    }
   
   
//获取参数
    var parameters=options.parameters||null;
   
//获取请求头信息
    var headers=options.headers||{};
   
//创建处理事件函数
    //加载,完成,成功,失败
    var onLoadingEventHandler=options.onLoading||function(){};
   
var onCompleteEventHandler=options.onComplete||function(){};
   
var onSuccessEventHandler=options.onSuccess||function(){};
   
var onFailureEventHandler=options.onFailure||function(){};
   
   
//根据url和参数,把地址拼接完整,并且清空parameters对象
    if(method=='GET'&&parameters!=null){
       
if(url.indexOf('?')>-1){
            url
+='&'+parameters;
        }
       
else{
            url
+='?'+parameters;
        }
        parameters
=null;
       
    }
   
//初始化请求
   
    request.open(method,url,
true);
   
   
//设置请求头
    request.setRequestHeader('contentType','application/x-www-form-rulencoded');
   
for(var name in headers){
        request.setRequestHeader(name ,headers[name]);
    }
   
   
//设置请求状态
    request.onreadystatechange=function(){
       
if(request.readyState==1){
            onLoadingEventHandler(request.readyState);
//状态值为1,说明正在加载
        }
       
if(request.readyState==4){
            onCompleteEventHandler();
//状态值为4,说明加载完成
            if(request.status&&request.status>=200&&request.status<300){
                onSuccessEventHandler(request);
//返回值在200到300之间,说明加载成功
            }
           
else{
                onFailureEventHandler();
//否则加载失败 
            }
        }
    }
    request.send(parameters);
//发送请求
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值