(OOP封装)AJAXScript.js /*通用发送模型*/function MyAJAX(){ var ClassType=['Abstruct']; this.msg = undefined; this.xmlHttpInstance = undefined;}MyAJAX.prototype.build = function () { //创建一个xmlHttpRequest var xmlHttp; if (windo
/*通用发送模型*/
function MyAJAX(){
var ClassType=['Abstruct'];
this.msg = undefined;
this.xmlHttpInstance = undefined;
}
MyAJAX.prototype.build = function () {
//创建一个xmlHttpRequest
var xmlHttp;
if (window.XMLHttpRequest) xmlHttp=new XMLHttpRequest();
else xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
return xmlHttp;
};
MyAJAX.prototype.sendRequest = function (how2Send,xmlHttp,url) {
//根据既定方法发送请求
xmlHttp.open(how2Send,url,true);
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
};
MyAJAX.prototype.post = function (url,sendMsg) {
//用post方法发送请求
var xmlHttp = this.build();
var instanceType = this;
this.sendRequest("POST",xmlHttp,url);
xmlHttp.send(sendMsg);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState===4 && xmlHttp.status===200){
instanceType.accessedCallback(xmlHttp);
}else{
instanceType.failedCallback(xmlHttp);
}
}
};
MyAJAX.prototype.get = function (url) {
//用get方法发送请求
var xmlHttp = this.build();
var instanceType = this;
this.sendRequest("GET",xmlHttp,url);
xmlHttp.send();
xmlHttp.onreadystatechange = function () {
instanceType.xmlHttpInstance = xmlHttp;
if (xmlHttp.readyState===4 && xmlHttp.status===200){
instanceType.accessedCallback(xmlHttp);
}else{
instanceType.failedCallback(xmlHttp);
}
}
};
MyAJAX.prototype.accessedCallback = function (xmlHttp) {
this.dispatchMsg(xmlHttp);//成功回应后的分发接口
};
MyAJAX.prototype.failedCallback = function (xmlHttp) {
//alert("xml接收失败!");//可重写
};
MyAJAX.prototype.dispatchMsg = function (xmlHttp) {
var FunctionType=['Abstruct'];
//由子类实现
};
MyAJAX.prototype.isReady = function () {
//当有数据发送来之后
return this.msg !== undefined;
};
MyAJAX.prototype.getData = function () {
//用户获取数据的方法
return this.msg;
};
MyAJAX.prototype.getXmlHttp= function () {
return this.xmlHttpInstance;
};
//-----两个常用的具体实现类-----//
/*XML的AJAX请求消息(XMLDoc)*/
function XmlAJAX() {
MyAJAX.call(this);
}
XmlAJAX.prototype = Object.create(MyAJAX.prototype);
XmlAJAX.prototype.constructor = XmlAJAX;
XmlAJAX.prototype.dispatchMsg = function (xmlHttp) {
var FunctionType=['Override'];
this.msg = xmlHttp.responseXML;
};
/*普通AJAX请求消息(TEXT)*/
function MsgAJAX() {
MyAJAX.call(this);
}
MsgAJAX.prototype = Object.create(MyAJAX.prototype);
MsgAJAX.prototype.constructor = MsgAJAX;
MsgAJAX.prototype.dispatchMsg = function (xmlHttp) {
var FunctionType=['Override'];
this.msg = xmlHttp.responseText;
};
回调接口式的封装.js
//-------回调接口的封装--------//
//详见 http://blog.csdn.net/shenpibaipao/article/details/78160994
function AJAXpost(url,sendMsg,callback) {
var xmlHttp;
if (window.XMLHttpRequest) xmlHttp=new XMLHttpRequest();
else xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.send(sendMsg);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState===4 && xmlHttp.status===200){
callback(xmlHttp);
}else{
//失败的回调接口,可以自己定义。一般情况下用不到。
}
}
}
function AJAXget(url,callback) {
var xmlHttp;
if (window.XMLHttpRequest) xmlHttp=new XMLHttpRequest();
else xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET",url,true);
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.send();
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState===4 && xmlHttp.status===200){
callback(xmlHttp);
}else{
//失败的回调接口,可以自己定义。一般情况下用不到。
}
}
}
