ajax|web|網站 最近,許多Web網站開始在開發人員社區當中引起關注。這些網站獨特之處在於,它們更像是傳統型應用程式而非Web應用程式。當您與它們互動時,它們可以快速在瀏覽器顯示無窮的資訊而又無需重新載入頁面。
例如,在Google Maps網站(http://maps.google.com/),您可以單擊地圖,縮小或者放大,然後隨心所欲地來回移動滑鼠。瀏覽器會連續地從伺服器讀取資料,但並不需要重新整理瀏覽器。它們使用的不是applet或者類似Flash的其他程式。那麼,它們是如何工作的?
下面介紹Asynchronous JavaScript + XML,即所謂的Ajax。要準確描述什麼是Ajax,最容易的方法是讓其與相反的情況進行對比。對於大部分Web網站,與Web伺服器進行互動是最簡單的通訊方式——就如您在對講機(walkie-talkie)上與好友聊天一樣。您可以一邊講話他在另一邊接聽,或者他說話你接聽,但您不能同時接聽和講話。對於Web使用者,當填寫線上表單然後單擊提交按鈕後,整個頁面就會發送至Web伺服器,使用者必須等待伺服器接受請受。當伺服器完成處理請求時,它就會將處理過的內容發送過來。只有這時,才可以最終重新整理使用者頁面。Ajax是一種減少這一系列事件的嘗試。當使用者位於Ajax類型的Web網站時,瀏覽器可以幕後非同步呼叫Web伺服器而無需發送整個頁面。
具體內容
通常,Ajax沒有軟體開發套件(SDK)。它不是您可以下載的東西。儘管XML出現在Ajax名稱中,但它實際上是幾種可以使用甚至不使用XML技術的結合。仔細研究一下,我們就會發現它是正被使用的幾項技術的混合體。JavaScript、DOM、XMLHttp以及XML是主要的角色。但要緊記,這種方法論既無標準亦無嚴格定義。您在一個執行程式中所看到的,可能不同於另一個執行程式中的情況。但是,Ajax執行程式中最常見的是JavaScript。
當使用者與瀏覽器互動時,JavaScript代碼會處理各種事件。比如按鍵或單擊事件等,並會相應地進行處理。JavaScript使用XMLHttpRequest對象作為瀏覽器和遠程伺服器之間的串連。Microsoft首先在Internet Explorer 5中採用XMLHttpRequest對象。
XMLHttp-Request對象最酷的地方是它可以在背景中啟動並執行同時與Web伺服器非同步進行對話,而無需重新載入頁面。當Web伺服器接收到瀏覽器的請求時,它就會進行處理並將處理過的XML資料返回至瀏覽器。JavaScript引擎收到這種處理過的XML資料,然後使用DOM處理相應的頁面組件。例如,在Ajax驅動的頁面中,如Google Suggest網站(www.google.com/webhp?complete=1&hl=en),當您輸入搜尋欄位時,每一個字母都被非同步發送至伺服器。在輸入時,內容快速顯示在本文的下方。在幕後,每個按鍵都會向伺服器進行數次調用。使用者不會受此影響,因為互動不會被中止。只有一部分頁面會被重新整理。這一切都可以高效地完成,因為僅有一部分頁面資料(而非整個頁面資料)通過線纜發送。
Ajax並非新生事物
應該注意Ajax並非新生事物。該方法論已運用了好多年。Web網站(如Google)正在證明Ajax的有效性、穩定性,並且使Web看起來更像是一個傳統型應用程式:即真正意義的Web開發。Ajax特殊之處在於它可以使用驗證過的現有技術完成這一切。換句話說就是,任何標準瀏覽器(可以處理JavaScript和DOM的瀏覽器)都可以正常工作。您不需要單獨安裝其他外掛程式。
在Magenic,我們可以看到這種方法論如何使我們的用戶端受益。據我們所知,Ajax並非可以取代一切Web網站,但在電腦指令系統中,它應佔有一席之地,並且是我們所需要的一種技能。
ASP.Net 2.0
ASP.Net 2.0可以明顯提高指令碼模型與這種方法論相結合。它們們稱之為指令碼回調而非Ajax。實際上,它們按我早先所描述的那樣進行工作,但是ASP.Net 2.0通過提供工具和支援從而使之更進一步。
注意事項
1、由於許多工作都必須移交給用戶端處理,所以Ajax會影響正確堆疊技術之間的命令列。當使用所現有的方法論設計此類應用程式時,應注意這一點。用戶端(瀏覽器)需要處理更多的工作,JavaScript要完成這些工作會相當複雜。它需要處理按鍵、滑鼠、與DOM互動、處理這些事件和伺服器資料的協調等。
2、還應該注意,許多使用者可能不想在瀏覽器上運行JavaScript。這時需要考慮Web網站使用者的需要。
3、Ajax名稱並非正式的。Adaptive Path的工作人員起了這個容易記住的名字。在ASP.Net 2.0中,它也被稱為“指令碼回調”。
- Ajax: 一個建立Web應用的新途徑
- Ajax的錯誤處理機制探討(2)
- Ajax的錯誤處理機制探討(1)
- 初次體驗.NET Ajax無重新整理技術
- Rails系統中的AJAX開發技術簡析(4)