AJax 應該不是一項技術,是一種思想而已,跟 ASP.NET 以及其它 Web 開發語言沒有什麼太大關系,這裡只是談談 ASP.Net 中目前使用的 Ajax 技術以及其它一些實現 AJax 的優秀框架。
Ajax 已經很流行一陣子了,現在談 Ajax 覺得有點老土。目前所謂的 Web2.0 網站,基本上沒有不使用 Ajax 的,就如使用 RSS 一樣,就如同一個標簽,貼上去就成了 2.0。AJax 具體細節不談,其目的就是讓用戶觸發一些操作的時候,頁面不會全部刷新,只刷新待更新的“部分頁面”,加載數據的過程中,用 Loading 的圖片來表示正在加載數據,不只是看起來挺不錯,也提高了用戶的訪問體驗,有一種酷酷的感覺。
至於 ASP.NET 中用到的 Ajax ,我想大多數人使用的是 Ajax.net / AJaxProfessional 或者 ASP.Net 2.0 中帶有的 Atlas 框架。因為都用過,我感覺這些都不是很好的 AJax 解決方案。
AJaxPro 用起來不是很方便,頁面需要在 Page_Load 裡面注冊,類似於
private void Page_Load(object sender, System.EventArgs e)而且 ASPX 頁面要包含一個 Runat=Server 的 標記,這樣 AJax.Net 會將用到的一些通用函數以及你自定義的函數加載進來,如果沒有 其實也可以,手動添加就可以了。但是,在我以前做過的應用中,時常出現的一些問題,比如,經常發現浏覽器狀態欄會有 JS 腳本錯誤,而此時你所做的 Ajax 效果會全部失效,解決辦法就是,把那個 Ajax.dll /AJaxPro.dll 給重新覆蓋一下就可以了,問題的原因究竟是什麼,目前還不知道。
至於 Atlas,我對它的感覺其實就跟對 DataGrid 的感覺一樣,嗯,這種控件的好用是好用,很方便,但是,真正做一些 Web 應用的時候,你不得不考慮到性能以及分層等各種問題。我想,在比較正式的 Web 應用中,沒幾個人去用 DataGrid 去顯示一些數據吧,建議大家盡量少用這些控件。另外就是,Atlas 的執行效率確實不夠理想,一直在那裡 Loading,等了好長時間,竟然出現什麼腳本錯誤,汗。
那還有沒有其它解決方案嗎?你可以自己寫些 Javascript 函數去實現。不過,我這裡推薦用 jQuery 這個 Javascript 框架,從百度百科引用一段對其的介紹:
jQuery 是繼 prototype 之後又一個優秀的 Javascrīpt 框架。其宗旨是——WRITE LESS,DO MORE,寫更少的代碼,做更多的事情。
它是輕量級的 js 庫(壓縮後只有21k) ,這是其它的 JS 庫所不及的,它兼容 CSS3,還兼容各種浏覽器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。
jQuery 是一個快速的,簡潔的 JavaScript 庫,使用戶能更方便地處理 Html documents、events、實現動畫效果,並且方便地為網站提供 AJax 交互。
jQuery 還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。
jQuery 能夠使用戶的 html 頁保持代碼和 html 內容分離,也就是說,不用再在 Html 裡面插入一堆JS來調用命令了,只需定義 id 即可。
看來這段介紹你會知道,Ajax 效果只是 jQuery 的眾多功能的一種,一般來說,Web 應用中使用 AJax,必然也離不開 Javascript,而 jQuery 正是為大家封裝了一些 JS 函數,使得你不在被 JS 的紛繁復雜所擔心,一切由 jQuery 幫你實現。
看一個小例子,就知道用 jQuery 做 AJax 實在是太方便了。
比如某個 ASPX 或者 Html 頁面裡面有個 Button,點擊觸發 AJax 加載數據,顯示到 裡面。點擊那個 Button 觸發一個 JS 函數即可:
以下是引用片段:這個函數就會先在那個 SPAN 裡面顯示“Loading News....”,通過異步調用,訪問 /Ajax.aspx 這個頁面,通過傳遞的 URL 參數 act=News 告訴頁面需要什麼類型的數據,你可以根據不同的參數,將數據通過 AJax.ASPx 直接 Write 到頁面上,然後返回給上述 JS 函數,呈現到頁面上,就這樣簡單搞定!
當然,jQuery 裡面並不是只有這一種 AJax 效果實現方式,這裡給出一些 jQuery 的資源,花上幾個小時的時間學一下,很值得:
jQuery 官網:http://jquery.com/
jQuery 中文 API 文檔: http://jquery.org.cn/visual/cn/index.XML
jQeury 中文入門教程: http://www.k99k.com/jQuery_getting_started.Html
至於其它的 Javascript 優秀框架有很多了,比如 Yahoo! User Interface Library,Prototype,Rico,Qooxdoo,Dojo 等,另外還有 AJax 方面一些資源可以參考一下這裡收集的資源。