在JavaScript中使用Ajax,可以动态的从服务器获得数据”拼凑“到网页上,这样大大提高了用户体验和速度,在用Ajax的过程中,有不少地方重用性挺高,可以封装起来,下面将处理Ajax的请求封装成了一个对象:
function AjaxRequest() {
// 根据浏览器条件建立XMLHttpRequest
// 除IE外的浏览器适合此种方式
if (window.XMLHttpRequest) {
try {
this.request = new XMLHttpRequest();
} catch(e) {
this.request = null;
}
// try the ActiveX (IE) version 适合IE
} else if (window.ActiveXObject) {
try {
this.request = new ActiveXObject("Msxml2.XMLHTTP");
// 适合版本较早的IE
} catch(e) {
try {
this.request = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
this.request = null;
}
}
}
// 如果没有创建成功
if (this.request == null)
alert("创建失败.\n" + "错误原因: " + e);
}
// 向服务器段发送Ajax请求
AjaxRequest.prototype.send = function(type, url, handler, postDataType, postData) {
if (this.request != null) {
// 消除之前的请求
this.request.abort();
url += "?dummy=" + new Date().getTime();
try {
this.request.onreadystatechange = handler;
this.request.open(type, url, true); // 这里总设置为异步的 (true表示为异步)
if (type.toLowerCase() == "get") {
//Get方式表示从服务器请求数据
this.request.send(null);
} else {
// 否则为Post,表示向服务器发送数据
this.request.setRequestHeader("Content-Type", postDataType);
this.request.send(postData);
}
} catch(e) {
alert("与服务器交互发生错误.\n" + "详情: " + e);
}
}
}
AjaxRequest.prototype.getReadyState = function() {
return this.request.readyState;
}
AjaxRequest.prototype.getStatus = function() {
return this.request.status;
}
AjaxRequest.prototype.getResponseText = function() {
return this.request.responseText;
}
AjaxRequest.prototype.getResponseXML = function() {
return this.request.responseXML;
}