//使用封装方法只需要关心提供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); */
这是这几天学的一些Ajax的封装