最近在學(xué)習(xí)ajax的時(shí)候發(fā)現(xiàn)不斷的調(diào)用get和post請求時(shí),代碼重復(fù)很多,有的公司會(huì)用自帶的封裝的方法,這個(gè)可以直接調(diào)用ajax的方法,但是在運(yùn)用的時(shí)候我們也應(yīng)該學(xué)習(xí)它是怎么封裝的和一些原理性的東西,Ajax技術(shù)在很多網(wǎng)站的開發(fā)都會(huì)用到,異步刷新大大提高了網(wǎng)站的性能。ajax的請求我們歸結(jié)了五部曲,下面是我自己通過查找資料和學(xué)習(xí)總結(jié)的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,post24 //url:需要發(fā)送的請求地址25 //parms:發(fā)送給服務(wù)器的數(shù)據(jù),post的時(shí)候才有值,get為null26 //callbakc:請求成功以后的回調(diào)函數(shù)27 ajaxComm: function (method, url, params, callbakc) {28 //1.0創(chuàng)建異步對象29 var xhr = this.GetXhr();30 //2.0設(shè)置請求的參數(shù)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設(shè)置回調(diào)函數(shù)39 xhr.onreadystatechange = function () {40 if(xhr.readyState==4&&xhr.status==200){41 var objdata = xhr.responseText;42 var data = JSON.parse(objdata);43 //執(zhí)行業(yè)務(wù)邏輯44 callbakc(data);45 }46 }47 //5.0發(fā)送請求48 xhr.send(params);49 50 }51 }新聞熱點(diǎn)
疑難解答
圖片精選