Ajax不是萬能的,在適合的場合使用Ajax,才能充分發揮它的長處,改善系統性能和用戶體驗,絕不可以為了技術而濫用。Ajax的特點在于異步交互,動態更新web頁面,因此它的適用范圍是交互較多,頻繁讀取數據的web應用。現在來看幾個Ajax的應用實例,讀者可以了解如何使用Ajax技術改進現有的web應用系統。
場景1. 用Ajax進行數據驗證
在填寫表單內容時,需要保證數據的唯一性(例如新用戶注冊填寫的用戶名),因此必須對用戶輸入的內容進行數據驗證。
數據驗證通常有兩種方式:
一種是直接填寫,然后提交表單,這種方式需要將這個頁面提交到服務器端進行驗證,整個過程不僅時間長而且造成了服務器不必要的負擔;
第二種方式是改進了的驗證過程,用戶可以通過點擊相應的驗證按鈕,打開新窗口查看驗證結果,但是這樣需要新開一個瀏覽器窗口或者對話框,還需要專門編寫驗證的頁面,比較耗費系統資源。
而使用Ajax技術,可以由XMLHttpRequest對象發出驗證請求,根據返回的HTTP響應判斷驗證是否成功,整個過程不需要彈出新窗口,也不需要將整個頁面提交到服務器,快速而又不加重服務器負擔。
場景2.按需取數據
分類樹或者樹形結構在web應用系統中使用得非常廣泛,例如部門結構,文檔得分類結構常常使用樹形空間呈現。
以前每次對分類樹得操作都會引起頁面重載,為了避免這種情況出現,一般不采用每次調用后臺得方式,而是一次性將分類結果中得數據一次性讀取出來并寫入數組,然后根據用戶的操作,用JavaScript來控制節點的呈現,這樣雖然解決了操作響應速度,不重復載入頁面以及避免向服務器頻繁發送請求的問題,但是如果用戶不對分類進行操作或者只對分類樹中的一部分數據進行操作的話(這種情況很普遍的),那么讀取的數據中就會有相當大的冗余,浪費了用戶的資源。特別是在分類結構復雜,數據龐大的情況下,這種弊端就更加明顯了。
現在應用Ajax改進分類樹的實現機制。在初始化頁面時,只獲取第一級子分類的數據并且顯示;當用戶點開一級分類的第一節點時,頁面會通過Ajax向服務器請求當前分類所屬的二級子分類的所有數據;如果再請求已經呈現的二級分類的某一節點時,再次向服務器請求當前分類所屬的三級子分類的所有數據,以此類推。頁面會根據用戶的操作向服務器請求它所需要的數據,這樣就不會存在數據的冗余,減少了數據下載總量。同時,更新頁面時不需要重載所有內容,只更新需要更新的那部分內容即可,相對于以前后臺處理并且重載的方式,大大縮短了用戶的等待時間。
場景3.自動更新頁面
在web應用中有很多數據的變化時十分迅速的,例如最新的熱點新聞,天氣預報以及聊天室內容等。在Ajax出現之前,用戶為了即使了解相應的內容必須不斷刷新頁面,查看是否有新的內容變化,或者頁面本身實現定時刷新的功能(大多數聊天室頁面就是這樣做的)。
有可能會發生這種情況;有一段時間網頁的內容沒有發生任何變化,但是用戶并不知道,仍然不斷的刷新頁面;或者用戶失去了耐心,放棄了刷新頁面,卻很有可能在此有新的消息出現,這樣就錯過了第一時間得到消息的機會。
應用Ajax可以改善這種這種情況,頁面加載以后,會通過Ajax引擎在后臺進行定時的輪詢,向服務器發送請求,查看是否有最新的消息。如果有則將新的數據(而不是所有數據)下載并且在頁面上進行動態的更新,通過一定的方式通知用戶(實現這樣的功能正是JavaScript的強項)。
這樣即避免了用戶不斷手工刷新頁面的不便,也不會因為重復刷新頁面造成資源浪費。
既然你己經對Ajax產生了興趣,還要知道重要的一點,即什么時候應該使用Ajax技術,而什么時候不該用。首先,不要害怕在應用中嘗試新的方法。我們相信.幾乎每個web應用都能從Ajax技術中獲益,只不過不要矯杠過正,過于離譜就行了。從驗證開始就很合適,但是不要限制你的主動性。你當然可以使用Ajax提交數據,但也許不能把它作為提交數據的主要方法。
其次,惟一會影響你應用Ajax的就是瀏覽器問題。如果大量用戶(或者特別重要的用戶)還在使用比較舊的瀏覽器,如IE 5 , Safari 1.2或Mozilla 1.0之前的版本,Ajax技術就不能奏效。如果這是一些很重要的用戶,你就要使用針對目標用戶的跨瀏覽器的方法,而放棄Ajax,或者開發一個可以妥善降級的網站。瀏覽器支持可能不是一個重要因素,因為netscape Navigaxar 4在市場上的份額很小。不過,還是應該查看Web日志,看看你的應用適用什么技術。
如前所述,驗證和表單填寫就非常適合采用Ajax實現。還可以使用DOM的“拖”技術建立真正動態的網站,如google的個性化主頁.
可以看到,Ajax為Web應用開發提供了新的機會。你不會再因為以往的專用技術或技術折中方案而受到妨礙。利用Ajax,胖客戶與瘦客戶之間的界限不再分明,真正的贏家則是你的用戶。