2006年2月24日

AJAX

AJAX ( Asynchronous JavaScript and XML ) 是近來網頁技術中被提到最多次的名詞。

簡單講 AJAX 的原理就是透過 JavaScript 操作 XMLHttpRequest 元件、HTML DOM 模型以達到讓瀏覽器在不換頁的情形下可以變更頁面上的資料內容。聽起來似乎很簡單,但隱藏的問題卻也不少:

  1. 瀏覽器的支援差異:例如 Gecko 核心、IE 核心、KHTML 核心、Opera 核心等就各有其 XMLHttpRequest 元件名稱,更糟的是即是同一系列的核心都有可能出現前後不相容的鳥問題。至於純文字型的瀏覽器則應該是被拒於 AJAX 門外了吧?
  2. 操作流程的控制:使用 GMail 時應該會發現到如果快速點選幾項高負載的功能時,後面的指令不能終止前一個指令的執行。所以有一種說法是:『使用者沒有後悔的機會』,不過我以為這可以透過操作流程的規劃來避免。
  3. 資料安全性的疑慮:總不會有人覺得信用卡資料在不知不覺間被傳送到 Server 上是一件好事吧?
  4. 對各種技術的理解程度:
    1. 如果不會操作 XMLHttpRequest 元件,那就別想讓瀏覽器背地裡偷偷向 Server 要資料。
    2. 如果對 HTML DOM 不熟悉的話,怎可能動態去變更網頁上的內容呢?(這屬於 DHTML 範圍,算是個很老的技術了。還記得 5 年多前曾買了一本微軟的 DHTML 應用手冊哩!)
    3. 個人是以為最關鍵的技術是 JavaScript 的操作,上面講的技術都要以 JavaScript 進行控制。
要純手工與 AJAX 正面硬幹當然可行,只要能統合各種技術的操作的確可以純手工打造一組 AJAX 應用系統。不過人性始終來自於惰性,我還是找些 Framework 來減少腦細胞的損耗吧!

AJAX Framework for Java:

  1. Getahead: DWR - Direct Web Remoting
  2. ZK Project
  3. ...
參考資料:
  1. Mozilla@Taiwan Wiki:AJAX 上手篇
  2. Luar 的 Flash 遊樂場:新手玩Ajax幾個留意地方
  3. 嘟嘟老窝:
    1. Thinking in AJAX(一) —— AJAX - X
    2. Thinking in AJAX(二) —— 基于AJAX的WEB设计
    3. Thinking in AJAX(三) —— AJAX框架汇总
  4. iThome Online:AJAX:網頁互動新典範