例子1:資料校正
在輸入form表單內容的時候,我們通常需要確保資料的唯一性。因此,常常在頁面上提供“唯一性校正”按鈕,讓使用者點擊,開啟一個校正小視窗;或者等form提交到伺服器端,由伺服器判斷後在返回相應的校正資訊。前者,window.open操作本來就是比較耗費資源的,通常由window. showModalDialog代替,即使這樣也要彈出一個對話方塊;後者,需要把整個頁面提交到伺服器並由伺服器判斷校正,這個過程不僅時間長而且加重了伺服器負擔。而使用AJAX,這個校正請求可以由XMLHttpRequest對象發出,整個過程不需要彈出新視窗,也不需要將整個頁面提交到伺服器,快速又不加重伺服器負擔。例子2:按需取資料—串聯功能表
以前,為了避免每次對菜單的操作引起的重載頁面,不採用每次調用背景方式,而是一次性將串聯功能表的所有資料全部讀取出來並寫入數組,然後根據使用者的操作用JavaScript來控制它的子集項目的呈現,這樣雖然解決了操作響應速度、不重載頁面以及避免向伺服器頻繁發送請求的問題,但是如果使用者不對菜單進行操作或只對菜單中的一部分進行操作的話,那讀取的資料中的一部分就會成為冗餘資料而浪費使用者的資源,特別是在菜單結構複雜、資料量大的情況下(比如菜單有很多級、每一級菜又有上百個項目),這種弊端就更為突出。
現在應用AJAX,在初始化頁面時我們唯讀出它的第一級的所有資料並顯示,在使用者操作一級菜單其中一項時,會通過Ajax向後台請求當前一級項目所屬的二級子功能表的所有資料,如果再繼續請求已經呈現的二級菜單中的一項時,再向後面請求所操作二級功能表項目對應的所有三級菜單的所有資料,以此類推……這樣,用什麼就取什麼、用多少就取多少,就不會有資料的冗餘和浪費,減少了資料下載總量,而且更新頁面時不用重載全部內容,只更新需要更新的那部分即可,相對於幕後處理並重載的方式縮短了使用者等待時間,也把對資源的浪費降到最低。
例子3:讀取外部資料
AJAX可以調用外部資料,因此,可以對一些開發的資料比如XML文檔、RSS文檔進行二次加工,實現資料整合或者開發應用程式。六、AJAX的缺陷
AJAX不是完美的技術。使用AJAX,它的一些缺陷不得不權衡一下:
- AJAX大量使用了Javascript和AJAX引擎,而這個取決於瀏覽器的支援。IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支援,Mozilla雖然也支援AJAX,但是提供XMLHttpRequest的方式不一樣。所以,使用AJAX的程式必須測試針對各個瀏覽器的相容性。
- AJAX更新頁面內容的時候並沒有重新整理整個頁面,因此,網頁的後退功能是失效的;有的使用者還經常搞不清楚現在的資料是舊的還是已經更新過的。這個就需要在明顯位置提醒使用者“資料已更新”。
- 對流媒體的支援沒有FLASH、Java Applet好。
- 一些手持功能(如手機、PDA等)現在還不能很好的支援Ajax。