站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

什么是ajax重構(gòu)

ajax重構(gòu)指的是在不改變軟件現(xiàn)有功能的基礎(chǔ)上,通過調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計(jì)模式和架構(gòu)更合理,提高軟件的擴(kuò)展性和維護(hù)性;Ajax的實(shí)現(xiàn)主要依賴于XMLHttpRequest對(duì)象,由于該對(duì)象的實(shí)例在處理事件完成后就會(huì)被銷毀,所以在需要調(diào)用它的時(shí)候就要重新構(gòu)建。

什么是ajax重構(gòu)

本文操作環(huán)境:windows10系統(tǒng)、javascript1.8.5&&html5版、Dell G3電腦。

什么是ajax重構(gòu)

重構(gòu)(Refactoring)就是在不改變軟件現(xiàn)有功能的基礎(chǔ)上,通過調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計(jì)模式和架構(gòu)更趨合理,提高軟件的擴(kuò)展性和維護(hù)性。

Ajax的核心對(duì)象是XMLHttpReguest,也就是說我們通過Ajax與服務(wù)器進(jìn)行交互,就必須要構(gòu)建XMLHttpRequest這個(gè)對(duì)象。

但是在頁面之中通過Ajax與服務(wù)器進(jìn)行交互,在交互之后XMLHttpReguest這個(gè)對(duì)象就會(huì)被銷毀。

所以我們頁面再次通過Ajax與服務(wù)器進(jìn)行交互,還需要重新的構(gòu)建XMLHttpRequest這個(gè)對(duì)象。

那么XMLHttpReguest這個(gè)對(duì)象的創(chuàng)建,我們需要考慮到瀏覽器的兼容性,所以說XMLHttpReguest的創(chuàng)建也是非常繁瑣的,需要根據(jù)不同瀏覽器的類型,來進(jìn)行不同方式的創(chuàng)建。

那么如果說我們?cè)诤芏嗟捻撁娑紤?yīng)用到了Ajax這種技術(shù),我們?cè)诤芏嗟捻撁娈?dāng)中都要來創(chuàng)建這個(gè)對(duì)象,這就體現(xiàn)不出OO(面向?qū)ο筮@種風(fēng)格,代碼的重復(fù)利用),面向?qū)ο笾刑岢a的重用,所以說我們通常情況下都會(huì)通過Ajax重構(gòu),來封裝XMLHttpReguest這個(gè)對(duì)象以及封裝一些對(duì)Ajax請(qǐng)求進(jìn)行處理的通用方法,那么我們?cè)诰帉懘a的時(shí)候就可以直接來引用這個(gè)對(duì)象,從而來達(dá)到代碼的重用,也節(jié)省了這個(gè)對(duì)象的創(chuàng)建時(shí)間

Ajax重構(gòu)步驟

1)創(chuàng)建一個(gè)單獨(dú)的JS文件,名字為AjaxRequest.js ,并且在該文件中編寫重構(gòu)Ajax所需的代碼

2)在 需要應(yīng)用Ajax的頁面中包括剛剛創(chuàng)建的AjaxRequest.js文件

3)在應(yīng)用Ajax的頁面中編寫錯(cuò)誤處理的方法,實(shí)例化Ajax對(duì)象的方法和回調(diào)函數(shù)

在jsp或html頁面之中我們編寫一段JavaScript的腳本代碼,那么可以在當(dāng)前的頁面當(dāng)中直接編寫JavaScript腳本代碼。也可以使用另外一種方式:創(chuàng)建js文件,然后將這個(gè)js文件引入到我們所編寫的jsp或者是html頁面當(dāng)中

示例如下:

(1)創(chuàng)建一個(gè)單獨(dú)的JS文件,命名為AjaxRequest.js,并且在該文件中編寫重構(gòu)Ajax所需要的代碼。

 var net = new Object();    //創(chuàng)建一個(gè)全局變量net  //編寫構(gòu)造函數(shù)  net.AjaxRequest = function(url,onload,onerror,method,params){      this.req = null;      this.onload = onload;      this.onerror = (onerror) ? onerror : this.defaultError;      this.loadDate(url,method,params);  }  //編寫用于初始化XMLHttpRequest對(duì)象并指定處理函數(shù),最后發(fā)送HTTP請(qǐng)求的方法  net.AjaxRequest.prototype.loadDate = function(url,method,params){      if(!method){          method = "GET";      }      if(window.XMLHttpRequest){          this.req = new XMLHttpRequest();      }else if(window.ActiveXObject){          this.req = new ActiveXObject("Microsoft.XMLHTTP");      }      if(this.req){          try{              var loader = this;              this.req.onreadystatechange = function(){                  net.AjaxRequest.onReadyState.call(loader);              }              this.req.open(method,url,true);    //建立對(duì)服務(wù)器的調(diào)用              if(method == "POST"){              //如果提交方式為POST                  this.req.setRequestHeader("Content-Type",                      "application/x-www-form-urlencoded");   //設(shè)置請(qǐng)求頭              }              this.req.send(params);    //發(fā)送請(qǐng)求          }catch(err){              this.onerror.call(this);          }      }    }  //重構(gòu)回調(diào)函數(shù)  net.AjaxRequest.onReadyState = function(){      var req = this.req;      var ready = req.readyState;      if(ready == 4){               //請(qǐng)求完成          if(req.status == 200){    //請(qǐng)求成功              this.onload.call(this);          }else{              this.onerror.call(this);          }      }  }  //重構(gòu)默認(rèn)的錯(cuò)誤處理函數(shù)  net.AjaxRequest.prototype.defaultError = function(){      alert("錯(cuò)誤數(shù)據(jù)nn回調(diào)狀態(tài):"+this.req.readyState+"n狀態(tài):"+this.req.status);  }

(2)在需要應(yīng)用的Ajax的頁面中應(yīng)用一下的語句包括(1)中創(chuàng)建的JS文件

<script language="javascript" src="AjaxRequest.js"></script>

(3)在應(yīng)用Ajax的頁面中編寫錯(cuò)誤處理的方法、實(shí)例化Ajax對(duì)象的方法和回調(diào)函數(shù)。

 <script language="javascript">  /*********************錯(cuò)誤處理的方法******************/      function onerror(){          alert("您的操作有誤!");      }  /*********************實(shí)例化Ajax對(duì)象的方法************/      function getInfo(){          var loader = new net.AjaxRequest("getInfo.jsp?nocache="+new Date().getTime(),              deal_getInfo,onerror,"GET");      }  /*********************回調(diào)函數(shù)************************/      function deal_getInfo(){          document.getElementById("showInfo").innerHTML=this.req.responseText;      }  </script>

【相關(guān)教程推薦:AJAX視頻教程】

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久九九AV免费精品| 亚洲热线99精品视频| 久久精品94精品久久精品| 国产大片91精品免费看3| 久久99精品波多结衣一区| 91精品国产综合久久婷婷| 国产精品理论电影| 99re在线精品视频| 国产乱人伦偷精品视频不卡| 精品欧洲videos| 99热精品久久只有精品30| 青青草国产精品久久久久| 无码专区人妻系列日韩精品少妇| 精品久久8x国产免费观看| 国产在线观看一区精品 | 四虎永久在线精品免费网址| 久久国产精品最新一区| 丰满人妻熟妇乱又伦精品| 亚洲日韩精品一区二区三区无码 | 日韩精品免费一线在线观看| 91在线亚洲精品专区| 久久精品国产亚洲Aⅴ蜜臀色欲 | 国产国拍精品亚洲AV片| 久久精品国产只有精品66| 国产麻豆精品入口在线观看| 国产精品成人一区二区| 国产精品嫩草影院在线播放| 国产伦精品一区二区三区不卡| 久久国产精品范冰啊| 精品国产免费一区二区三区香蕉 | 日韩精品一线二线三线优势| 亚洲精品无码专区久久| 人妻少妇精品无码专区二区| 久久99精品国产99久久6| 国产精品V亚洲精品V日韩精品| 2020久久精品亚洲热综合一本| 久久久久久国产精品mv| 久久精品无码精品免费专区| 久久久综合九色合综国产精品| 日本内射精品一区二区视频| 精品人妻中文字幕有码在线|