一个AJAX类

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

基本用法:


var ajax = new AjaxObj(url);

 

ajax.addListener(200, function(r){

   alert(r);

});

 

ajax.send();

也可以连续调用:


var ajax = new AjaxObj(url).addListener(200, function(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);

	};

};

你可能感兴趣的:(Ajax)