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

来源:互联网 发布:问卷调查数据分析报告 编辑:程序博客网 时间:2024/05/20 06:22


//该函数返回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);
//发送请求
}

原创粉丝点击