標籤:js 實現對ajax請求物件導向的封裝
AJAX 是一種用於建立快速動態網頁的技術。通過在後台與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。
在js中使用ajax請求一般包含三個步驟:
1、建立XMLHttp對象
2、發送請求:包括開啟連結、發送請求
3、處理響應
在不使用任何的js架構的情況下,要想使用ajax,可能需要向下面一樣進行代碼的編寫
var xmlHttp = xmlHttpCreate();//建立對象xmlHttp.onreadystatechange = function(){//響應處理if(xmlHttp.readyState == 4){console.info("response finish");if(xmlHttp.status == 200){ console.info("reponse success");console.info(xmlHttp.responseText); }}}xmlHttp.open("get","TestServlet",true);//開啟連結xmlHttp.send(null);//發送請求function xmlHttpCreate() {var xmlHttp;try {xmlHttp = new XMLHttpRequest;// ff opera} catch (e) {try {xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");// ie} catch (e) {try {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}}}return xmlHttp;}console.info(xmlHttpCreate());
如果在比較複雜的商務邏輯裡面使用這種ajax請求,會使得代碼很臃腫,不方便重用,並且可以看到,可能在伺服器響應成功後要處理一個商務邏輯操作,這個時候不得不把操作寫在onreadystatechage方法裡面。
為了方便代碼的重用我們可以做出如下處理; 1、伺服器響應成功後,要處理的商務邏輯交給開發人員自己處理 2、對請求進行物件導向的封裝處理之後看起來應該像下面這個樣子:window.onload = function() {document.getElementById("hit").onclick = function() {console.info("開始請求");ajax.post({data : ‘a=n‘,url : ‘TestServlet‘,success : function(reponseText) {console.info("success : "+reponseText);},error : function(reponseText) {console.info("error : "+reponseText);}});}}var ajax = {xmlHttp : ‘‘,url:‘‘,data:‘‘,xmlHttpCreate : function() {var xmlHttp;try {xmlHttp = new XMLHttpRequest;// ff opera} catch (e) {try {xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");// ie} catch (e) {try {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}}}return xmlHttp;},post:function(jsonObj){ajax.data = jsonObj.data;ajax.url = jsonObj.url;//建立XMLHttp對象,開啟連結、請求、響應ajax.xmlHttp = ajax.xmlHttpCreate();ajax.xmlHttp.open("post",ajax.url,true);ajax.xmlHttp.onreadystatechange = function(){if(ajax.xmlHttp.readyState == 4){if(ajax.xmlHttp.status == 200){jsonObj.success(ajax.xmlHttp.responseText);}else{jsonObj.error(ajax.xmlHttp.responseText);}}}ajax.xmlHttp.send(ajax.data);}};上述代碼實現了類似jquery中的ajax操作,讀者有不懂的地方可以慢慢思考或者在此留言