一个AJAX类

以前写的一个AJAX类,兼容性还不错,简单易用,记下了方便以后找

基本用法:

var ajax = new AjaxObj(url);

ajax.addListener(
200function(r){
   alert(r);
});

ajax.send();

也可以连续调用:

var ajax = new AjaxObj(url).addListener(200function(r){
   alert(r);
}).send();

另外还支持自定义的POST或GET方式请求,以及监视不同的HTTP状态码,自己看代码琢磨吧 

完整代码:

代码
AjaxObj = function(url, method, content){
    
this.r = null;
    
this.url = url;
    
this.method = method;
    
this.content = content;
    
this.header = {};
    
this.header["Connection"= "close";
    
this.header["Content-type"= "application/x-www-form-urlencoded";

    
var self = this;

    
if(window.XMLHttpRequest){
        
this.r = new XMLHttpRequest();
    }
else if(window.ActiveXObject){
        
try { 
            
this.r = new ActiveXObject("Msxml2.XMLHTTP"); 
        } 
catch(e) {
            
try
                
this.r = new ActiveXObject("Microsoft.XMLHTTP"); 
            } 
catch(e) {
            }
        }
    }

    
this.addListener = function(http_status, func){
        
if(!this.L)
            
this.L=[];
        
this.L[http_status] = func;
        
return this;
    };

    
this.setHeader = function(name, value){
        
this.header[name] = value;
        
this.r.setRequestHeader(name, value);
        
return this;
    };

    
this.send = function(){
        
if(this.method != "post" && this.method != "get")
            
this.method = "get";

        
this.r.open(this.method, this.url, true);

        
for(var h in this.header) {
            
this.r.setRequestHeader(h, this.header[h]);
        }

        
this.r.send(this.content);
    };

    
if(this.r) this.r.onreadystatechange = function(){
        
if(self.r.readyState == 4 && self.L[self.r.status] != null)
            self.L[self.r.status](self.r.responseText);
    };
};


 


 

 

posted @ 2010-08-25 11:15  rshow  阅读(315)  评论(0编辑  收藏  举报