Ajax入門-簡(jiǎn)易教程

          AJAX簡(jiǎn)介:

          AJAX 指異步 JavaScript 及 XMLAsynchronous JavaScript And XML)。

          JAX 不是一種新的編程語(yǔ)言,而是一種用于創(chuàng)建更好更快以及交互性更強(qiáng)的 Web 應(yīng)用程序的技術(shù)。

          通過(guò) AJAX,你可以創(chuàng)建更好、更快以及更友好的 WEB 應(yīng)用程序。

          AJAX 基于 JavaScript 和 HTTP 請(qǐng)求(HTTP requests)。

          ----------------------------------------------------------------------------------------------

          AJAX = 異步 JavaScript 及 XMLAsynchronous JavaScript and XML

          通過(guò) AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 對(duì)象來(lái)直接與服務(wù)器進(jìn)行通信。通過(guò)這個(gè)對(duì)象,您的 JavaScript 可在不重載頁(yè)面的情況與 Web 服務(wù)器交換數(shù)據(jù)。

          AJAX 在瀏覽器與 Web 服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP 請(qǐng)求),這樣就可使網(wǎng)頁(yè)從服務(wù)器請(qǐng)求少量的信息,而不是整個(gè)頁(yè)面。

          AJAX 可使因特網(wǎng)應(yīng)用程序更小、更快,更友好。

          AJAX 是一種獨(dú)立于 Web 服務(wù)器軟件的瀏覽器技術(shù)。

          ----------------------------------------------------------------------------------------------

          AJAX 使用 Http 請(qǐng)求

          在傳統(tǒng)的 JavaScript 編程中,假如您希望從服務(wù)器上的文件或數(shù)據(jù)庫(kù)中得到任何的信息,或者向服務(wù)器發(fā)送信息的話,就必須利用一個(gè) HTML 表單向服務(wù)器 GET 或 POST 數(shù)據(jù)。而用戶則需要單擊提交按鈕來(lái)發(fā)送/獲取信息,等待服務(wù)器的響應(yīng),然后一張新的頁(yè)面會(huì)加載結(jié)果。

          由于每當(dāng)用戶提交輸入后服務(wù)器都會(huì)返回一張新的頁(yè)面,傳統(tǒng)的 web 應(yīng)用程序變得運(yùn)行緩慢,且越來(lái)越不友好。

          通過(guò)利用 AJAX,您的 JavaScript 會(huì)通過(guò) JavaScript 的 XMLHttpRequest 對(duì)象,直接與服務(wù)器來(lái)通信。

          通過(guò)使用 HTTP 請(qǐng)求,web 頁(yè)可向服務(wù)器進(jìn)行請(qǐng)求,并得到來(lái)自服務(wù)器的響應(yīng),而不加載頁(yè)面。用戶可以停留在同一個(gè)頁(yè)面,他或她不會(huì)注意到腳本在后臺(tái)請(qǐng)求過(guò)頁(yè)面,或向服務(wù)器發(fā)送過(guò)數(shù)據(jù)。

          ----------------------------------------------------------------------------------------------XMLHttpRequest 對(duì)象

          通過(guò)使用 XMLHttpRequest 對(duì)象,web 開發(fā)者可以做到在頁(yè)面已加載后從服務(wù)器更新頁(yè)面!

          在 2005 年 AJAX 被 Google 推廣開來(lái)(Google Suggest)。

          Google 建議使用 XMLHttpRequest 對(duì)象來(lái)創(chuàng)建一種動(dòng)態(tài)性極強(qiáng)的 web 界面:當(dāng)您開始在 Google 的搜索框中輸入查詢時(shí),JavaScript 會(huì)向某個(gè)服務(wù)器發(fā)出這些字詞,然后服務(wù)器會(huì)返回一系列的搜索建議。

          ----------------------------------------------------------------------------------------------

          您的第一個(gè) AJAX 應(yīng)用程序

          AJAX - 瀏覽器支持

          AJAX 的要點(diǎn)是 XMLHttpRequest 對(duì)象。

          不同的瀏覽器創(chuàng)建 XMLHttpRequest 對(duì)象的方法是有差異的。

          IE 瀏覽器使用 ActiveXObject,而其他的瀏覽器使用名為 XMLHttpRequest 的 JavaScript 內(nèi)建對(duì)象。


           1 <html>
           2 <body>
           3 
           4 <script type="text/javascript">
           5 
           6 function ajaxFunction()
           7  {
           8  var xmlHttp;
           9  
          10  try
          11     {
          12    // Firefox, Opera 8.0+, Safari
          13     xmlHttp=new XMLHttpRequest();
          14     }
          15  catch (e)
          16     {
          17 
          18   // Internet Explorer
          19    try
          20       {
          21       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          22       }
          23    catch (e)
          24       {
          25 
          26       try
          27          {
          28          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          29          }
          30       catch (e)
          31          {
          32          alert("您的瀏覽器不支持AJAX!");
          33          return false;
          34          }
          35       }
          36     }
          37  }
          38 </script>
          39 
          40 <form name="myForm">
          41     用戶: <input type="text" name="username" />
          42     時(shí)間: <input type="text" name="time" />
          43 </form></body>
          44 </html>
          45 

          例子解釋:

          首先聲明一個(gè)保存 XMLHttpRequest 對(duì)象的 xmlHttp 變量。

          然后使用 XMLHttp=new XMLHttpRequest() 來(lái)創(chuàng)建此對(duì)象。這條語(yǔ)句針對(duì) FirefoxOpera 以及 Safari 瀏覽器。假如失敗,則嘗試針對(duì) Internet Explorer 6.0+ 的 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"),假如也不成功,則嘗試針對(duì) Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")

          假如這三種方法都不起作用,那么這個(gè)用戶所使用的瀏覽器已經(jīng)太過(guò)時(shí)了,他或她會(huì)看到一個(gè)聲明此瀏覽器不支持 AJAX 的提示。

          ----------------------------------------------------------------------------------------------

          XMLHttpRequest 對(duì)象的三個(gè)重要的屬性

          onreadystatechange 屬性

          onreadystatechange 屬性存有處理服務(wù)器響應(yīng)的函數(shù)。下面的代碼定義一個(gè)空的函數(shù),可同時(shí)對(duì) onreadystatechange 屬性進(jìn)行設(shè)置:


          1 xmlHttp.onreadystatechange=function(){
          2    //我們需要在這里寫一些代碼
          3 }
          4 

          readyState 屬性

          readyState 屬性存有服務(wù)器響應(yīng)的狀態(tài)信息。每當(dāng) readyState 改變時(shí),onreadystatechange 函數(shù)就會(huì)被執(zhí)行。

          這是 readyState 屬性可能的值:

          0 請(qǐng)求未初始化(在調(diào)用open()之前)

          1 請(qǐng)求已提出(調(diào)用send()之前)

          2 請(qǐng)求已發(fā)送(這里通常可以從響應(yīng)得到內(nèi)容頭部)

          3 請(qǐng)求處理中(響應(yīng)中通常有部分?jǐn)?shù)據(jù)可用,但是服務(wù)器還沒有完成響應(yīng))

          4 請(qǐng)求已完成(可以訪問(wèn)服務(wù)器響應(yīng)并使用它)

          我們要向這個(gè) onreadystatechange 函數(shù)添加一條 If 語(yǔ)句,來(lái)測(cè)試我們的響應(yīng)是否已完成(意味著可獲得數(shù)據(jù)):


          1 xmlHttp.onreadystatechange=function(){
          2     if (xmlHttp.readyState == 4){
          3         //從服務(wù)器的response獲得數(shù)據(jù)
          4     }
          5 }
          6 

          responseText 屬性

          可以通過(guò) responseText 屬性來(lái)取回由服務(wù)器返回的數(shù)據(jù)。

          ----------------------------------------------------------------------------------------------

          向服務(wù)器發(fā)送一個(gè)請(qǐng)求

          要想把請(qǐng)求發(fā)送到服務(wù)器,我們就需要使用 open() 方法和 send() 方法。

          open() 方法需要三個(gè)參數(shù)。第一個(gè)參數(shù)定義發(fā)送請(qǐng)求所使用的方法(GET 還是 POST)。第二個(gè)參數(shù)規(guī)定服務(wù)器端腳本的 URL。第三個(gè)方法規(guī)定應(yīng)當(dāng)對(duì)請(qǐng)求進(jìn)行異步地處理。

          send() 方法可將請(qǐng)求送往服務(wù)器。如果我們假設(shè) HTML 文件和 ASP 文件位于相同的目錄,那么代碼是這樣的:

          xmlHttp.open("GET","time.jsp",true);

          xmlHttp.send(null);

           1 <html>
           2 <body>
           3 
           4 <script type="text/javascript">
           5 
           6 function ajaxFunction()
           7  {
           8  var xmlHttp;
           9  
          10  try
          11     {
          12    // Firefox, Opera 8.0+, Safari
          13     xmlHttp=new XMLHttpRequest();
          14     }
          15  catch (e)
          16     {
          17 
          18   // Internet Explorer
          19    try
          20       {
          21       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          22       }
          23    catch (e)
          24       {
          25 
          26       try
          27          {
          28          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          29          }
          30       catch (e)
          31          {
          32          alert("您的瀏覽器不支持AJAX!");
          33          return false;
          34          }
          35       }
          36     }
          37     
          38     xmlHttp.onreadystatechange=function()
          39       {
          40       if(xmlHttp.readyState==4)
          41         {
          42          document.myForm.time.value=xmlHttp.responseText;
          43         }
          44       }
          45     xmlHttp.open("GET","time.asp",true);
          46     xmlHttp.send(null);
          47     
          48  }
          49 </script>
          50 
          51 <form name="myForm">
          52 用戶: <input type="text" name="username" onkeyup="ajaxFunction();" />
          53 時(shí)間: <input type="text" name="time" />
          54 </form>
          55 
          56 </body>
          57 </html>
          58 

          ----------------------------------------------------------------------------------------------

          AJAX - 服務(wù)器端的腳本

          現(xiàn)在,我們要?jiǎng)?chuàng)建可顯示當(dāng)前服務(wù)器時(shí)間的腳本。

          responseText 屬性會(huì)存儲(chǔ)從服務(wù)器返回的數(shù)據(jù)。在這里,我們希望傳回當(dāng)前的時(shí)間。這是 "time.asp" 的代碼:


          1 <%
          2     response.expires=-1
          3     response.write(time)
          4 %>
          5 

          注釋:Expires 屬性可設(shè)置在頁(yè)面緩存失效前頁(yè)面被緩存的時(shí)間(分鐘)。Response.Expires=-1 指示頁(yè)面不會(huì)被緩存。




          posted on 2009-07-28 15:54 彭偉 閱讀(210) 評(píng)論(0)  編輯  收藏 所屬分類: Good_Study


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 天镇县| 祁连县| 南昌市| 乐昌市| 新宁县| 鹤岗市| 长葛市| 济源市| 松潘县| 吉隆县| 泸水县| 深水埗区| 疏勒县| 黑河市| 怀仁县| 成安县| 定日县| 惠东县| 洞头县| 无极县| 贵港市| 嵊州市| 八宿县| 石城县| 微博| 枝江市| 乌审旗| 神农架林区| 句容市| 高碑店市| 江门市| 刚察县| 固安县| 宜昌市| 钟山县| 若尔盖县| 麟游县| 察隅县| 新竹市| 金秀| 武定县|