詳解Ajax在ASP.NET中的實現方式
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 里面注冊,類似于
以下是引用片段: |
而且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 方面一些資源可以參考一下這里收集的資源。
【編輯推薦】