最近在學習ajax的時候發現不斷的調用get和post請求時,代碼重復很多,有的公司會用自帶的封裝的方法,這個可以直接調用ajax的方法,但是在運用的時候我們也應該學習它是怎么封裝的和一些原理性的東西,Ajax技術在很多網站的開發都會用到,異步刷新大大提高了網站的性能。ajax的請求我們歸結了五部曲,下面是我自己通過查找資料和學習總結的ajax的get和post請求的封裝類。
代碼:
1 var ajaxHelper = { 2 //1.得到異步對象 3 GetXhr: function () { 4 var xhr; 5 if (window.XMLHttpRequest) { 6 //兼容新式瀏覽器 7 xhr = new XMLHttpRequest(); 8 } else { //兼容IE老式瀏覽器 9 xhr = new ActiveXObject("Microsoft.XMLHTTP"); 10 } 11 //返回異步對象 12 return xhr; 13 }, 14 //2.定義get請求 15 ajaxGet: function (url, callback) { 16 this.ajaxComm("get", url, null, callback); 17 }, 18 //3.定義post請求 19 ajaxPost: function (url,params,callback) { 20 this.ajaxComm("post",url,params,callback); 21 }, 22 //4.公共請求方法 23 //method:get,post 24 //url:需要發送的請求地址 25 //parms:發送給服務器的數據,post的時候才有值,get為null 26 //callbakc:請求成功以后的回調函數 27 ajaxComm: function (method, url, params, callbakc) { 28 //1.0創建異步對象 29 var xhr = this.GetXhr(); 30 //2.0設置請求的參數 31 xhr.open(method, url, params, callbakc); 32 //3.0防止緩存 33 if (method == "get") { 34 xhr.setRequestHeader("If-Modified-Since", "0"); 35 } else { 36 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 37 } 38 //4.0設置回調函數 39 xhr.onreadystatechange = function () { 40 if(xhr.readyState==4&&xhr.status==200){ 41 var objdata = xhr.responseText; 42 var data = JSON.parse(objdata); 43 //執行業務邏輯 44 callbakc(data); 45 } 46 } 47 //5.0發送請求 48 xhr.send(params); 49 50 } 51 }
