最近做的一个项目中有需要使用Ajax的部分,正好不是很忙,所以自己写了一个简单的Ajax类,拿出来share一下:
function BmAjaxObject() { this.ajaxObj = this.getXmlHttpObject(); } BmAjaxObject.prototype.getXmlHttpObject = function() { var _ajaxObj; try { _ajaxObj = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e1) { try { _ajaxObj = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e2) { _ajaxObj = false; } } if(!_ajaxObj && typeof(XMLHttpRequest) != 'undefined') { _ajaxObj = new XMLHttpRequest(); } return _ajaxObj; } BmAjaxObject.prototype.doCallBack = function(url) { if(this.ajaxObj) { this.ajaxObj.open('GET', url); var othis = this; this.ajaxObj.onreadystatechange = function() {othis.readyStateChange()}; this.ajaxObj.send(null); } } BmAjaxObject.prototype.abortCallBack = function() { if(this.ajaxObj) { this.ajaxObj.abort(); } } BmAjaxObject.prototype.readyStateChange = function() { if(this.ajaxObj.readyState == 1) { this.onLoading(); } else if(this.ajaxObj.readyState == 2) { this.onLoaded(); } else if(this.ajaxObj.readyState == 3) { this.onInteractive(); } else if(this.ajaxObj.readyState == 4) { if(this.ajaxObj.status == 0) { this.onAbort(); } else if(this.ajaxObj.status == 200) { this.onComplete(this.ajaxObj.responseText, this.ajaxObj.responseXML); } else { this.onError(this.ajaxObj.status, this.ajaxObj.statusText, this.ajaxObj.responseText); } } } BmAjaxObject.prototype.onLoading = function() {} BmAjaxObject.prototype.onLoaded = function() {} BmAjaxObject.prototype.onInteractive = function() {} BmAjaxObject.prototype.onComplete = function(responseText, responseXml) {} BmAjaxObject.prototype.onError = function(status, statusText, responseText) {} BmAjaxObject.prototype.onAbort = function() {} |
使用方法:
var a = new BmAjaxObject(); a.doCallBack('DesignFacade'); a.onComplete = function(responseText, responseXml) { alert(responseText); } |
同样,其他的方法可以使用相同的方式加上,项目中试用后,效果还可以。(里边用到了JS的类的概念)