1.工厂式
a.)json对象 ----------------------------------------------
var Ajax={ _XMLHTTP:false,
Request:function(url, method, data, asy, cb) { Ajax._CreateXMLHTTP() if(Ajax._XMLHTTP) { Ajax._XMLHTTP.onreadystatechange = function(){Ajax._Response(cb)}; Ajax._XMLHTTP.open(method,url,asy); Ajax._XMLHTTP.setRequestHeader("If-Modified-Since","0"); Ajax._XMLHTTP.send(data); } else { alert("不能创建XMLHttpRequest对象实例") } }, _CreateXMLHTTP:function() { if(window.ActiveXObject) { var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var n = 0; n < MSXML.length; n ++) { try { Ajax._XMLHTTP = new ActiveXObject(MSXML[n]); Ajax._XMLHTTP.setRequestHeader('Content-Type', 'text/html; charset=gb2312'); break; } catch (e){} } } else if(window.XMLHttpRequest) { Ajax._XMLHTTP = new XMLHttpRequest(); if(Ajax._XMLHTTP.overrideMimeType) { Ajax._XMLHTTP.overrideMimeType("text/xml"); } } },
_Response:function(cb) { if(Ajax._XMLHTTP.readyState == 4){ if(Ajax._XMLHTTP.status == 200) { cb(Ajax._XMLHTTP.responseText)
} else { cb("远端数据失败,请重新操作。") } } } };
b.包装 ----------------------------------------------------------------- var _ajax$xmlHTTP=false; function _ajax$request(url, method, data, asy, cb){ _ajax$createXMLHTTP() if(_ajax$xmlHTTP) { _ajax$xmlHTTP.onreadystatechange = function(){_ajax$response(cb)}; _ajax$xmlHTTP.open(method,url,asy); _ajax$xmlHTTP.setRequestHeader("If-Modified-Since","0"); _ajax$xmlHTTP.send(data); } else { alert("不能创建XMLHttpRequest对象实例") } } function _ajax$createXMLHTTP() { if(window.ActiveXObject) { var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var n = 0; n < MSXML.length; n ++) { try { _ajax$xmlHTTP = new ActiveXObject(MSXML[n]); _ajax$xmlHTTP.setRequestHeader('Content-Type', 'text/html; charset=gb2312'); break; } catch (e){} } } else if(window.XMLHttpRequest) { _ajax$xmlHTTP = new XMLHttpRequest(); if(_ajax$xmlHTTP.overrideMimeType) { _ajax$xmlHTTP.overrideMimeType("text/xml"); } } } function _ajax$response(cb){ if(_ajax$xmlHTTP.readyState == 4){ if(_ajax$xmlHTTP.status == 200) { cb(_ajax$xmlHTTP.responseText)
} else { cb("远端数据失败,请重新操作。") } } } var Ajax={ xmlHTTP:_ajax$xmlHTTP, request:_ajax$request, createXMLHTTP:_ajax$createXMLHTTP, response:_ajax$response }
c对象构适合 ---------------------------------------
var Ajax= new Object(); Ajax.HttpRequestObj=false; function _AjaxRequest(url){ if(window.XMLHttpRequest){ Ajax.HttpRequestObj = new XMLHttpRequest(); if(Ajax.HttpRequestObj.overrideMimeType){ Ajax.HttpRequestObj.overrideMimeType("text/xml"); } } else if(window.ActiveXObject){ var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var n = 0; n < MSXML.length; n ++) { try{ Ajax.HttpRequestObj = new ActiveXObject(MSXML[n]); Ajax.HttpRequestObj.setRequestHeader('Content-Type', 'text/html; charset=gb2312'); break; } catch(e){} } } if(!Ajax.HttpRequestObj){ alert("不能创建XMLHttpRequest对象实例") return false; } Ajax.HttpRequestObj.onreadystatechange = function(){_AjaxResponse()}; Ajax.HttpRequestObj.open("get",url,false); Ajax.HttpRequestObj.send(null); //HttpRequestObj.open("get",url,false); //HttpRequestObj.send(null); //if(HttpRequestObj.status==200){ // return HttpRequestObj.responseText; // } } function _AjaxResponse(){ if(Ajax.HttpRequestObj.readyState == 4){ if(Ajax.HttpRequestObj.status == 200) { // bb(Ajax.HttpRequestObj.responseText) alert(Ajax.HttpRequestObj.responseText) // document.getElementById("maincontent").innerHTML=HttpRequestObj.responseText; } else { //document.getElementById("maincontent").innerHTML="远端数据失败,请重新操作。"; } } }
//Ajax.constructor.prototype.AjaxRequest=_AjaxRequest; Ajax.AjaxRequest=_AjaxRequest;
d.也可以再包装下 -------------------------------------- function CreateAjax(){return Ajax}
=======================================================
2.类方式,构造式
function CreateAjax() { this.xmlHTTP=false; this.request=function(url, method, data, asy, cb){ this.createXMLHTTP(); if(this.xmlHTTP) { var obj=this; this.xmlHTTP.onreadystatechange = function(){obj.response(cb)}; this.xmlHTTP.open(method,url,asy); this.xmlHTTP.setRequestHeader("If-Modified-Since","0"); this.xmlHTTP.send(data); } else { alert("不能创建XMLHttpRequest对象实例") } };
this.createXMLHTTP=function(){ if(window.ActiveXObject) { var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var n = 0; n < MSXML.length; n ++) { try { this.xmlHTTP = new ActiveXObject(MSXML[n]); this.xmlHTTP.setRequestHeader('Content-Type', 'text/html; charset=gb2312'); break; } catch (e){} } } else if(window.XMLHttpRequest) { this.xmlHTTP = new XMLHttpRequest(); if(this.xmlHTTP.overrideMimeType) { this.xmlHTTP.overrideMimeType("text/xml"); } } };
this.response=function(cb){ if(this.xmlHTTP.readyState == 4) { if(this.xmlHTTP.status == 200) { cb(this.xmlHTTP.responseText)
} else { cb("远端数据失败,请重新操作。") } } }; }
=============================
4.类prototype原型式
function CreateAjax() { this.xmlHTTP=false; this.request=function(url, method, data, asy, cb){ this.createXMLHTTP(); if(this.xmlHTTP) { var thisObj=this; this.xmlHTTP.onreadystatechange = function(){thisObj.response(cb)}; this.xmlHTTP.open(method,url,asy); this.xmlHTTP.setRequestHeader("If-Modified-Since","0"); this.xmlHTTP.send(data); } else { alert("不能创建XMLHttpRequest对象实例") } };
this.createXMLHTTP=function(){ if(window.ActiveXObject) { var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var n = 0; n < MSXML.length; n ++) { try { this.xmlHTTP = new ActiveXObject(MSXML[n]); this.xmlHTTP.setRequestHeader('Content-Type', 'text/html; charset=gb2312'); break; } catch (e){} } } else if(window.XMLHttpRequest) { this.xmlHTTP = new XMLHttpRequest(); if(this.xmlHTTP.overrideMimeType) { this.xmlHTTP.overrideMimeType("text/xml"); } } }; };
CreateAjax.prototype.response=function(cb){ if(this.xmlHTTP.readyState == 4) { if(this.xmlHTTP.status == 200) { cb(this.xmlHTTP.responseText)
} else { cb("远端数据失败,请重新操作。") } } };
================================
我的原始js如下:
var HttpRequestObj=false; function AjaxRequest(url){ if(window.XMLHttpRequest){ HttpRequestObj = new XMLHttpRequest(); if(HttpRequestObj.overrideMimeType){ HttpRequestObj.overrideMimeType("text/xml"); } } else if(window.ActiveXObject){ var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var n = 0; n < MSXML.length; n ++) { try{ HttpRequestObj = new ActiveXObject(MSXML[n]); HttpRequestObj.setRequestHeader('Content-Type', 'text/html; charset=gb2312'); break; } catch(e){} } } if(!HttpRequestObj){ alert("不能创建XMLHttpRequest对象实例") return false; } HttpRequestObj.onreadystatechange = AjaxResponse; HttpRequestObj.open("get",url,true); HttpRequestObj.send(null); } function AjaxResponse(){ if(HttpRequestObj.readyState == 4){ if(HttpRequestObj.status == 200) { document.getElementById("maincontent").innerHTML=HttpRequestObj.responseText; } else { document.getElementById("maincontent").innerHTML="远端数据失败,请重新操作。"; } } }
==========================
<script> var _xmlHTTP=false; function _request(url, method, data, asy, cb){ _createXMLHTTP() if(_xmlHTTP) { _xmlHTTP.onreadystatechange = function(){_response(cb)}; _xmlHTTP.open(method,url,asy); _xmlHTTP.setRequestHeader("If-Modified-Since","0"); _xmlHTTP.send(data); } else { alert("不能创建XMLHttpRequest对象实例") } } function _createXMLHTTP() { if(window.ActiveXObject) { var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var n = 0; n < MSXML.length; n ++) { try { _xmlHTTP = new ActiveXObject(MSXML[n]); _xmlHTTP.setRequestHeader('Content-Type', 'text/html; charset=gb2312'); break; } catch (e){} } } else if(window.XMLHttpRequest) { _xmlHTTP = new XMLHttpRequest(); if(_xmlHTTP.overrideMimeType) { _xmlHTTP.overrideMimeType("text/xml"); } } } function _response(cb){ if(_xmlHTTP.readyState == 4){ if(_xmlHTTP.status == 200) { cb(_xmlHTTP.responseText)
} else { cb("远端数据失败,请重新操作。") } } }
function searchHotel(responseText) { alert(responseText) }
var HotelAjax = { xmlHTTP: _xmlHTTP, get:function(url){_request(url, "get", null, true, function(responseText){alert(responseText)})} };
function AjaxResponse(url) { function hotel(responseText) { alert(responseText); }; _request(url, "get", null, true, hotel) }
AjaxResponse("http://www.hao123.com")
</script>