華 英 張曉艷
(蘇州市職業大學,江蘇 蘇州 215014)
AJAX是Asynchronous JavaScript and XML的縮寫,確切地說是AJX,但這個詞不容易發音,Jesse Jame Garret在一次洗澡中想到了AJAX這個詞,于是開始用它來描述這套新技術。另有一種說法,Ajax是希臘神話中最高最強壯的,僅次于Achilles的第二勇士,而當今的“桌面應用戰爭”與特洛伊戰爭也有一定的相似性。不管哪種說法,從2005年2月AJAX一詞出現開始,注定會成為Web2.0浪潮中的熱點技術,并使ASP.NET發生了革命性的變革。
傳統Web應用程序是基于服務器的應用,99%是服務器端代碼。當客戶端用戶需要請求數據時,發送HTTP請求到服務器,服務器接到請求進行處理,處理完成后返回一個HTTP頁面到客戶端。服務器處理請求時客戶端進入空閑等待狀態,得到數據后,瀏覽器需要完全刷新。雖然Internet的速度變得越來越快,但大量的數據請求會使響應速度非常緩慢,同時頁面的刷新必然會產生抖動的感覺;同時請求的大量數據中,真正需要更新的數據很可能只是一小部分,無需更新的數據也被一起重新請求,大大降低了響應速度。
AJAX的關鍵技術是異步,通過在服務器和客戶端之間增加一個中間層——AJAX引擎來實現異步化。AJAX引擎存在于客戶端,由它來完成許多原本在服務器上的數據驗證和數據處理工作,只是將需要更新的數據向服務器提交請求,從而大大減輕服務器負擔,其工作原理如圖1所示。用戶提交請求后,由AJAX引擎決定是提交給服務器還是自己處理,服務器對提交的數據處理完畢后,將結果返回給AJAX引擎,由AJAX引擎完成數據的解析工作,最終通過HTML和CSS技術呈現。區別于傳統Web應用程序,AJAX更大程度地發揮了客戶端瀏覽器的潛力,減少瀏覽器和服務器之間的傳輸數據量,可以在不刷新整個頁面的前提下更新指定數據,數據傳輸和數據處理可以同時進行,減少瀏覽器的空閑等待時間,使Web應用程序的性能和交互效果都得到大幅提高。

圖1 AJAX工作原理
AJAX不是一門新的編程語言,甚至不能說是一種新技術,它實際上是將一系列成熟技術(有些甚至是人們認為已經過時的技術),有效地融合在一起,目的是為用戶創建更好更快以及交互性更強的Web應用程序的一種新的開發方式。AJAX集成的多項技術關系如下:
(1)使用XHTML+CSS進行頁面展示;使用DOM來完成動態交互;使用JavaScript代碼把各種元素集成在一起。
(2)使用XML和XSLT進行數據交換及相關操作,對數據處理的非專有性和平臺獨立性使得AJAX可以在使用業內標準技術的任何平臺上運行。重點強調客戶端的處理,盡可能地消除往返的數據交換,明顯地改善應用程序的性能。
(3)使用XMLHttpRequest對象實現異步數據請求和檢索,請求頁面中的部分數據。這樣不僅每次通過網絡請求的數據量比較少,減少數據響應時間,而且在瀏覽器等待服務器響應時可以繼續處理頁面的數據。
(4)JavaScript是眾多技術的粘合劑。AJAX利用了已經成熟的腳本語言JavaScript,基本上每一款瀏覽器都支持它。同時AJAX的出現使被很多人認為已經過時的JavaScript再度成為編程人員的焦點。
AJAX可以使應用程序快速執行服務器的應用。微軟開發了一套易于使用的AJAX控件庫,通過簡單的拖放操作來實現AJAX的強大功能、快速響應和靈活性。這意味著你即使不懂JavaScript和DHTML編程,也可以通過在IDE(如Visual Studio)中添加AJAX控件的方法來創建應用程序,大大降低了開發者的技術門檻。微軟考慮到使用AJAX控件在頁面中集成標準的ASP.NET控件是件困難而繁瑣的工作,因此,使用ScriptManager控件來實現可靠的管理控制。當使用IDE創建一個AJAX項目時,IDE會自動添加一個ScriptManager控件到頁面,同時在每一頁面添加如下聲明:

該控件僅在設計視圖中是可見的,只需確定其EnablePartialRendering屬性為True,再拖放一個或多個UpdatePanel控件到頁面,每個UpdatePanel運行時單獨刷新,互不影響,通過這些UpdatePanel控件異步回傳。AJAX通常被應用在表單驅動的交互、深層次的級聯菜單、關鍵字提示或需要快速響應的用戶與用戶間的交流。
AJAX的優勢毋庸置疑,但也不是處處適用。AJAX不適用的情況有以下幾種:
(1)簡單的表單
AJAX的優勢是異步回傳信息,從而提高響應速度。但對于部分簡單表單,如登錄表單、評論留言表單,使用AJAX并不能對響應產生多大的改善。
(2)完全更新的頁面
使用AJAX可以實現頁面的局部刷新,但是如果整個頁面都需要從服務器回傳信息,為什么不重新做一次服務器請求呢?
(3)需要保留歷史記錄的頁面
目前人們對于AJAX最主要的批評是有些使用了AJAX的頁面會破壞瀏覽器后退按鈕的功能,使用戶無法回到前一個頁面狀態。因此,對于需要查看上一次訪問頁面內容的頁面,如搜索引擎,應慎重使用AJAX。對于這一問題,通常采用隱藏的IFRAME來重現頁面上的變更。
AJAX改變傳統基于服務器的Web應用,充分發揮客戶端的優勢,使Web應用程序如桌面應用程序般反應靈敏。同時微軟公司為了更好地推動AJAX的發展,吸取之前的教訓,沒有聲明其所有權,并且開放了相關標準,這給AJAX以更大更廣的發展空間。盡管在自身的安全性和瀏覽器的兼容性方面還有許多需要加強的地方,但這些都無法掩蓋AJAX使Web應用更加自然快速響應,提升用戶瀏覽體驗的光芒。Web開發人員根據具體業務需求,充分發揮異步的優勢,盡可能地回避其短處,必能創建出迷人的、富有交互性的站點和應用程序。
[1]Jesse Liberty,Dan Hurwitz,Brain MacDonald.學習ASP.NET2.0和AJAX[M].北京:機械工業出版社,2008.
[2]孫啟良.Ajax技術與傳統Web應用的比較[J].信息技術,2010,(1):108-110.
[3]崔娜.Ajax技術及其實踐應用[J].內蒙古科技與經濟,2010,(4):114-121.
[4]葉小嶺,吳敏,張穎超.基于AJAX技術的WEB研究與實現[J].微計算機信息,2010,26(1-3):222-226.
[5]岳建斌,張志斌.Ajax技術在Web中的應用研究[J].電腦知識與技術,2010,6(24):6698-6699.