一个ajax通用函数(xmlhttprequest封装)

 

ContractedBlock.gif ExpandedBlockStart.gif Code
var ajax = function(options){
    options 
= {
        type        : options.type          
|| 'POST',
        url         : options.url           
|| '',
        timeout     : options.timeout       
|| 5000,
        onComplete  : options.onComplete    
|| function(){},
        onError     : options.onError       
|| function(){},
        onSuccess   : options.onSuccess     
|| function(){},
        data        : options.data          
|| ''
    }

    
if(typeof XMLHttpRequest === 'undefined'){
        XMLHttpRequest 
= function(){
            
return new ActiveXObject(
                navigator.userAgent.indexOf(
'MSIE 5'>= 0 ?
                    
'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'
            );
        }
    }
    
    
var xml = new XMLHttpRequest();
    
    xml.open(options.type,options.url,
true);
    
var timeoutLength = options.timeout;
    
var requestDone = false;

    setTimeout(
function(){
        requestDone 
= true;
    },timeoutLength);

    xml.onreadystatechange 
= function(){
        
if(xml.readyState == 4 && !requestDone){
            
if(httpSuccess(xml)){
                options.onSuccess(httpData(xml,options.type));
            }
else{
                options.onError();
            }
            options.onComplete();
            xml 
= null;
        }
    };

    xml.send();

    
var httpSuccess = function(r){
        
try{
            
return !r.status && location.protocol == "file:"
                
|| (r.status >= 200 && r.status < 300)
                
|| r.status == 304
                
|| navigator.userAgent.indexOf('Safari'>= 0 && typeof r.status == 'undefined';
        }
catch(e){}
        
return false;
    }

    
var httpData = function(r,type){
        
var ct = r.getResponseHeader("content-type");
        
var data = !type && ct.indexOf('xml'>= 0 ;
        data 
= type == 'xml' || data ? r.responseXML : r.responseText;

        
if(type == 'script'){
            eval.call(window,data);
            
return data;
        }
    }
}

var serialize = function(a){
    
var s = [];
    
if(a.constructor == Array){
        
for(var i = 0 ; i < a.length ; i++){
            s.push(a[i].name 
+ '=' + encodeURIComponent(a[i].value));
        }
    }
else{
        
for(var j in a){
            s.push(j 
+ '=' + encodeURIComponent(a[j]));
        }
    }
    
return s.join('&');
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值