天天看點

Ajax學習

以前,當我們點選了一個按鈕,向伺服器請求資料的時候,通常會有這麼一個流程。浏覽器向伺服器發送http請求→伺服器傳回整個頁面→浏覽器将原先的整個頁面替換成新的頁面。這樣子做當然沒有什麼問題,但是比如在看洋芋的視訊的時候,想看一下下方的評論,不過瘾,想再看下一頁的評論,這時候浏覽器會向伺服器發請求,要是正在看視訊的時候整個頁面重新加載,視訊重加載一次,那簡直不可饒恕。是以就産生了ajax這種技術,用來進行頁面的局部重新整理,省的每次更新界面都得重新下載下傳一個完整的界面。ajax(asynchronous javascript and xml,異步javascript和xml)是一種進行頁面局部異步重新整理的技術。用ajax向伺服器發送請求和獲得伺服器傳回的資料并且更新到界面中,不是整個頁面重新整理,而是在html頁面中使用javascript建立xmlhttprequest對象來向伺服器送出請求以及獲得傳回的資料,就像javascript版的webclient一樣,在頁面中由xmlhttprequest來發出http請求和獲得伺服器的傳回資料,這樣頁面就不會整個重新整理了。

      下面我們将用一個小例子來體驗一下ajax的神奇。我們将會做一個向伺服器擷取時間的小頁面,這個東西将通過xmlhttprequest向伺服器發送請求。

Ajax學習
Ajax學習

在這段代碼中,我們做了一下幾件事情:1、建立一個xmlhttprequest對象用來處理ajax請求。2、我們調用xmlhttprequest.open()方法準備ajax請求,傳進去的參數主要是選擇請求的方法和請求的url。3、我們将xmlhttprequest.onreadystatechange綁定上我們自己的處理函數,主要就是判斷傳回的消息是否正确,如果正确,那麼從傳回的消息中提取我們需要的資訊并綁定到指定的控件上。4、向伺服器發起請求。

其實這個過程有點像資料庫的查詢(執行)過程。資料庫的查詢要經曆這麼幾個步驟,首先建立資料庫的連接配接,通常是通過指定的資料庫連接配接字元串進行資料庫的比對,再次就是進行查詢操作,最後操作完成後對查詢的結果進行處理。

我們在vs2010中建立一個webapplication,并建立一個getdate.ashx來處理用戶端的請求。

Ajax學習
Ajax學習

這個一般處理程式其實就做一件事情,就是将伺服器上面的時間發送給用戶端。

1、前面我們定義了ajax的同步請求,如果我們發送異步請求,那麼在請求過程中javascript代碼會繼續執行,這時可以通過readystate屬性判斷請求的狀态(即上文xmlhttp.readystate==4處的代碼),當readystate = 4時,表示收到全部響應資料,屬性值的定義如下:

readystate值

描述

未初始化;尚未調用open()方法

1

啟動;尚未調用send()方法

2

已發送;但尚未收到響應

3

接收;已經收到部分響應資料

4

完成;收到全部響應資料

<a href="http://files.cnblogs.com/kissazi2/testajax.zip"> ----示例代碼</a>

<a href="http://kb.cnblogs.com/page/150964/">ajax與json的一些總結</a>

<a href="http://www.w3.org/tr/xmlhttprequest/">xmlhttprequest</a>

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

轉載:http://www.cnblogs.com/kissazi2/p/3294341.html