一个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); }; };