久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Ajax使用小結(jié)

 muyable 2014-08-20

本科做課設(shè)的時(shí)候也用過(guò)ajax,,但是當(dāng)時(shí)做出來(lái)的東西在大部分瀏覽器中都沒(méi)法異步更新頁(yè)面內(nèi)容,當(dāng)時(shí)也就得過(guò)且過(guò)了,。

前段時(shí)間做demo(萬(wàn)惡的demo讓我復(fù)習(xí)了多少東西……)又把a(bǔ)jax拿過(guò)來(lái)復(fù)習(xí)了一遍,,終于可以適應(yīng)主流的ie、firefox,、chrome三大瀏覽器的較新版本(最近1年的版本吧,,再早的版本沒(méi)有試過(guò),但想必也沒(méi)什么問(wèn)題)了,。

小結(jié)如下:

1,、ajax的實(shí)現(xiàn)步驟

實(shí)現(xiàn)ajax異步更新,需要一個(gè)異步通信方法,,只要在頁(yè)面中的html標(biāo)簽的事件處理腳本或者其他的js代碼中調(diào)用該異步通信方法就可以完成頁(yè)面的異步更新,。該方法包括以下幾個(gè)步驟:

s1: 獲取一個(gè)XMLHttpRequest對(duì)象

s2: 編寫(xiě)一個(gè)處理函數(shù),綁定到XMLHttpRequest對(duì)象的onreadystatechange事件上,該處理函數(shù)用于在ajax請(qǐng)求的狀態(tài)發(fā)生變化時(shí)進(jìn)行相應(yīng)的處理

s3: 在XMLHttpRequest對(duì)象上open一個(gè)request,,形如:xmlHttp.open("GET", "status.jsp?id="+Math.random());

s4: setRequestHeader("header", "value");可以設(shè)置各種header,,如果服務(wù)器端不需要header信息,也可已省略這一步

s5: send() request

最為關(guān)鍵的就是s2和s3.

2,、獲取XMLHttpRequest對(duì)象

這么干就OK了,。

[javascript] view plaincopy
  1. var xmlHttp;  
  2. function createXmlHttpRequest()  
  3. {  
  4.     if (window.XMLHttpRequest)  
  5.     {  
  6.         xmlHttp=new XMLHttpRequest();  
  7.     }  
  8.     else if (window.ActiveXObject)  
  9.     {  
  10.         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  
  11.     }  
  12. }  

3、編寫(xiě)處理函數(shù)

處理函數(shù)基本就是這樣:

[javascript] view plaincopy
  1. function processXXX()  
  2. {  
  3.     if (xmlHttp.readyState==4)  
  4.     {  
  5.         if (xmlHttp.status==200)  
  6.         {  
  7.             //……  
  8.         }  
  9.     }  
  10. }  

可以通過(guò)xmlHttp得到responseText或者responseXML,,分別得到服務(wù)器端的字符串形式或者xml形式的響應(yīng),,前者通常是一段可以直接用來(lái)更新頁(yè)面的內(nèi)容,而后者是xml格式的數(shù)據(jù),,可以用js取出其中的元素值,。根據(jù)需要選用一種之一即可。例如更新頁(yè)面上的一個(gè)統(tǒng)計(jì)數(shù)值的處理函數(shù)如下:

[javascript] view plaincopy
  1. function processStatistics()  
  2. {  
  3.     var responseContext;  
  4.     if (xmlHttp.readyState==4)  
  5.     {  
  6.         if (xmlHttp.status==200)  
  7.         {  
  8.             responseContext=xmlHttp.responseText;  
  9.             document.getElementById("statistics").innerHTML=responseContext;  
  10.         }  
  11.     }  
  12. }  

4,、發(fā)送異步請(qǐng)求

這一步是ajax的關(guān)鍵,,通過(guò)調(diào)用xmlHttp的open和send方法來(lái)完成,例如:

[javascript] view plaincopy
  1. xmlHttp.open("GET", "status.jsp?id="+Math.random(), true);  
  2. xmlHttp.send(null);  

一般request參數(shù)不多時(shí)用GET方式就可以,,open的第二個(gè)參數(shù)是要請(qǐng)求的服務(wù)器端的一個(gè)url,,可以是jsp或者servlet,也可已是struts2 action,。如果是struts2 action的話(huà),,那么在自定義的action控制器中不要配置返回視圖,直接在execute方法中用servlet api拿到PrintWriter,、寫(xiě)入要返回的內(nèi)容并flush+close PrintWriter,,在execute方法中return null(不跳轉(zhuǎn)到某個(gè)試圖)即可。url中的id參數(shù)是一個(gè)無(wú)實(shí)際意義的參數(shù),,但是非常重要,,很多瀏覽器中都會(huì)有cache,請(qǐng)求一個(gè)地址時(shí),,瀏覽器會(huì)檢查cache中是否有最近的該url的響應(yīng)內(nèi)容,,如果有就不會(huì)向服務(wù)器發(fā)送請(qǐng)求,而是直接返回cache中的內(nèi)容,,這樣可以提高瀏覽的速度,。瀏覽器cache是基于這樣一個(gè)假設(shè):網(wǎng)頁(yè)的內(nèi)容不會(huì)在很短的一段時(shí)間內(nèi)更新。但對(duì)于ajax,,有時(shí)需要頻繁地進(jìn)行異步更新(如定時(shí)更新頁(yè)面上的系統(tǒng)狀態(tài)),,所以需要加上一個(gè)隨機(jī)的參數(shù),防止cache中的內(nèi)容影響頁(yè)面的更新,。open的第三個(gè)參數(shù)為true表示采用異步方式處理請(qǐng)求,,ajax必須用true,,一般該參數(shù)在缺省情況下都是true。

send方法的參數(shù)在GET方式下為null即可,,在POST方式下send的參數(shù)就是要發(fā)送的key-value數(shù)據(jù),,多條數(shù)據(jù)之間用&分隔,如果post要以表單的形式發(fā)送數(shù)據(jù),,還需要設(shè)置header:

setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多