免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Ajax使用小結(jié)

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

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

小結(jié)如下:

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

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

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

s2: 編寫一個(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、編寫處理函數(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. }  

可以通過xmlHttp得到responseText或者responseXML,分別得到服務(wù)器端的字符串形式或者xml形式的響應(yīng),前者通常是一段可以直接用來更新頁面的內(nèi)容,而后者是xml格式的數(shù)據(jù),可以用js取出其中的元素值。根據(jù)需要選用一種之一即可。例如更新頁面上的一個(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)鍵,通過調(diào)用xmlHttp的open和send方法來完成,例如:

[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的話,那么在自定義的action控制器中不要配置返回視圖,直接在execute方法中用servlet api拿到PrintWriter、寫入要返回的內(nèi)容并flush+close PrintWriter,在execute方法中return null(不跳轉(zhuǎn)到某個(gè)試圖)即可。url中的id參數(shù)是一個(gè)無實(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)頁的內(nèi)容不會(huì)在很短的一段時(shí)間內(nèi)更新。但對(duì)于ajax,有時(shí)需要頻繁地進(jìn)行異步更新(如定時(shí)更新頁面上的系統(tǒng)狀態(tài)),所以需要加上一個(gè)隨機(jī)的參數(shù),防止cache中的內(nèi)容影響頁面的更新。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");

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
AJAX筆記
總結(jié)-Ajax工作原理和實(shí)現(xiàn)步驟
AJAX原理
Ajax 基礎(chǔ)知識(shí)
Web基礎(chǔ)了解版11-Ajax-JSON
Ajax的經(jīng)典示例
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服