//使用封装方法只需要关心提供http的请求方法,url地址,数据,成功和失败的回调方法
//类的构造定义,主要职责就是新建出XMLHttpRequest对象
var MyXMLHttpRequest = function() {
var xmlhttprequest;
if (window.XMLHttpRequest) {
xmlhttprequest = new XMLHttpRequest();
if (xmlhttprequest.overrideMimeType) {
xmlhttprequest.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
var activeName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0 ; i < activeName.length; i++) {
try{
xmlhttprequest = new ActiveXObject(activeName[i]);
break;
} catch(e) {
}
}
}
if (xmlhttprequest == undefined || xmlhttprequest == null) {
alert("XMLHtttpRequest对象创建失败!!");
} else {
this.xmlhttp = xmlhttprequest;
}
}
//用户发送请求的方法
MyXMLHttpRequest.prototype.send = function(method,url,data,callback,failback) {
if (this.xmlhttp != undefined && this.xmlhttp != null) {
method = method.toUpperCase();
if (method != "GET" && method != "POST") {
alert("HTTP的请求方法必须是GET或POST!!");
return;
}
if (url == null || url == undefined) {
alert("HTTP的请求地址必须设置!");
return;
}
var tempxmlhttp = this.xmlhttp;
this.xmlhttp.onreadystatechange = function() {
if (tempxmlhttp.readyState == 4) {
if (tempxmlhttp.status == 200) {
var responseText = tempxmlhttp.responseText;
var reponseXML = tempxmlhttp.responseXML;
if (callback == undefined || callback == null) {
alert("没有设置处理数据正确返回的方法!");
alert("返回的数据:" + responseText);
} else {
callback(responseText,reponseXML);
}
} else {
if (failback == undefined || failback == null) {
alert("没有设置处理数据返回失败的处理方法!");
alert("HTTP的响应码:" + tempxmlhttp.status + ",响应码的文本信息:" + tempxmlhttp.statusText);
} else {
failback(tempxmlhttp.status,tempxmlhttp.statusText);
}
}
}
}
//解决缓存的转换
if (url.indexOf("?") >= 0) {
url = url + "&t=" + (new Date()).valueOf();
} else {
url = url + "?t=" + (new Date()).valueOf();
}
//解决跨域的问题
if (url.indexOf("http://") >= 0) {
url.replace("?","&");
url = "Proxy?url=" + url;
}
this.xmlhttp.open(method,url,true);
//如果是POST方式,需要设置请求头
if (method == "POST") {
this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
}
this.xmlhttp.send(data);
} else {
alert("XMLHtttpRequest对象创建失败,无法发送数据!");
}
}
MyXMLHttpRequest.prototype.abort = function() {
this.xmlhttp.abort();
}
/*
//加入需要的封装,可以使用如下代码
var xmlhttp = new MyXMLHttpRequest();
xmlhttp.send("GET","AJAXServer?name=123",null,callback,faliback);
*/
This is some of the past few days to learn the package Ajax







