曾经编写过一个AJAX类,该类的兼容性很好,简单易用,今天特地记录下,方便以后查找和参考。
基本使用方法非常简单,只需创建AjaxObj对象并指定URL,然后添加监听器并发送请求即可。例如:
```javascript
var ajax = new AjaxObj(url);
ajax.addListener(200, function(response){
alert(response);
});
ajax.send();
```
还可以采用连续调用的方式,如:
```javascript
var ajax = new AjaxObj(url)
.addListener(200, function(response){
alert(response);
})
.send();
```
这个AJAX类还支持自定义的POST或GET方式请求,以及监视不同的HTTP状态码。具体的实现细节可以自行查看代码。
以下是该AJAX类的完整代码:
```javascript
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--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]) self.L[self.r.status](self.r.responseText);
};
};
```
这个AJAX类可以很好地适应不同的浏览器环境,并且提供了丰富的接口供开发者使用。无论是GET请求还是POST请求,都可以轻松实现,并且支持自定义HTTP头信息。当请求状态改变时,可以通过监听器获取响应数据。希望这个类能对你的开发有所帮助。