框架代码如下:
// 使用封装方法的人只关心提供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("XMLHttpRequest对象创建失败!"); } 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 responseXML = tempxmlhttp.responseXML; if (callback == undefined || callback == null) { alert("没有设置处理数据正确返回方法!"); alert("返回的数据:" + responseText) } else { callback(responseText, responseXML); } } else { if (failback == undefined || failback == null) { alert("没有设置处理数据正确返回的方法!"); } 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("XMLHttpRequest对象创建失败,无法发送数据!"); }}//放弃AJAX请求MyXMLHttpRequest.prototype.abort = function () { this.xmlhttp.abort();}
调用方式如下:
1. 引用js
2. new 一个自定义的 XMLHttpRequest 对象3. 使用里面的 send 方法进行数据提交4. 构造 callback 回调处理函数,与 failback 失败的 回调函数