ajax|rails
七、 使用觀察器
Rails能夠讓你監視一個欄位的值,並且在無論何時欄位值發生變化時,都作一次到一個行動處理器的Ajax調用。當前被觀察欄位的值被發送到本次調用相關的寄送資料的行動處理器中。
最常用的一種情況是實現一個實況尋找:
<label for="searchtext">Live Search:</label> <%= text_field_tag :searchtext %> <%= observe_field(:searchtext, :frequency => 0.25, :update => :search_hits, :url => { :action => :live_search }) %> <p>Search Results:</p> <div id="search_hits"></div> |
這個代碼小片段實現監視一個稱為searchtext的文字框欄位的值。每隔四分之一秒,Rails檢查該欄位的變化。如果該欄位發生變化,瀏覽器將作一個到live_search行動處理器的Ajax調用,並把結果顯示在search_hits div中。
你可以在我的部落格上看到一個這種現場尋找的實際展示。在右上方的搜尋方塊中,你可以試著輸入"enterprise"或"rails",看看發生了什麼。
八、 是否應用Ajax技術
當你使用Ajax技術來更新一個web頁面部分時,使用者得到的是快速響應性和流暢性。然而,使用者也失去了書籤功能和使用瀏覽器的向後按鈕的能力。這兩個缺點來源於同一個事實:URL不做改變,因為瀏覽器並沒有裝載一新的頁面。
不要僅因為Ajax相當酷而使用它,而應考慮在你的web應用程式的使用者介面中什麼最為重要。
例如,如果一個web頁面顯示一個帳戶列表-上面有一些諸如添加、刪除和改名帳戶等等的操作,這些都是Ajax的良好候選。如果使用者點擊一個超級連結來顯示屬於一個帳戶的所有清單-這種情況下,你應該顯示一新頁面並且避免Ajax。
這意味著使用者能夠記下該帳戶頁面和清單頁面,並且使用向後和向前按鈕在它們之間切換。使用者不能夠記下所有這些列表之一中的操作或使用向後按鈕來嘗試撤消一個在該列表上的操作(在一傳統型web應用程式中,這兩者你也都希望避免發生)。
九、 添頭
我想介紹給你許多真正酷的東西,但是卻不會深入到細節中去討論。
Web頁面上傳檔案的功能經常令一些使用者緊皺眉頭,因為使用者在上傳處理過程中,他不會收到任何反饋資訊,除了螢幕上漏鬥滑鼠在不停地轉轉轉……通過使用Ajax技術,你可以與伺服器進行通訊-在上傳過程中,可以檢索和顯示上傳的狀態。Sean Treadway和Thomas Fuchs實現了一個有關如何?這種技術的現場展示,這是通過使用Rails和一個視頻來實現的。
另外,Rails使用的Prototype JavaScript庫也實現了大量的視覺效果。效果示範頁面上有一個這些效果的線上示範,其中包括JavaScript對使用之的調用。
十、 感想
自從孤立的web網站服務於靜態頁面以來,Web已經經曆了一段相當長的裡程。如今,我們在慢慢地進入到一個新的時代-網站動態地相互連結在一起,web API允許我們容易地在已有的服務上進行這樣的建立,而且web使用者介面已變得越來越流暢和具有快速響應性。很明顯,Ajax在如今已浮出水面的Web 2.0傳奇中將佔有舉足輕重的地位。
無論如何,把複雜的Ajax特徵增加到一個web應用程式應該是一堆相當大量的工作,但是Rails使得所有這些變得太簡單了。