七、 使用觀察器
Rails能夠讓你監(jiān)視一個字段的值,并且在無論何時字段值發(fā)生變化時,都作一次到一個行動處理器的Ajax調(diào)用。當(dāng)前被觀察字段的值被發(fā)送到本次調(diào)用相關(guān)的寄送數(shù)據(jù)的行動處理器中。
最常用的一種情況是實(shí)現(xiàn)一個實(shí)況查找:
<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> |
這個代碼小片段實(shí)現(xiàn)監(jiān)視一個稱為searchtext的文本框字段的值。每隔四分之一秒,Rails檢查該字段的變化。如果該字段發(fā)生變化,瀏覽器將作一個到live_search行動處理器的Ajax調(diào)用,并把結(jié)果顯示在search_hits div中。
你可以在我的博客上看到一個這種現(xiàn)場查找的實(shí)際展示。在右上角的搜索框中,你可以試著輸入"enterprise"或"rails",看看發(fā)生了什么。
八、 是否應(yīng)用Ajax技術(shù) 當(dāng)你使用Ajax技術(shù)來更新一個web頁面部分時,用戶得到的是快速響應(yīng)性和流暢性。然而,用戶也失去了書簽功能和使用瀏覽器的向后按鈕的能力。這兩個缺點(diǎn)來源于同一個事實(shí):URL不做改變,因?yàn)闉g覽器并沒有裝載一新的頁面。
不要僅因?yàn)锳jax相當(dāng)酷而使用它,而應(yīng)考慮在你的web應(yīng)用程序的用戶接口中什么最為重要。
例如,如果一個web頁面顯示一個帳戶列表-上面有一些諸如添加、刪除和改名帳戶等等的操作,這些都是Ajax的良好候選。如果用戶點(diǎn)擊一個超級鏈接來顯示屬于一個帳戶的所有清單-這種情況下,你應(yīng)該顯示一新頁面并且避免Ajax。
這意味著用戶能夠記下該帳戶頁面和清單頁面,并且使用向后和向前按鈕在它們之間切換。用戶不能夠記下所有這些列表之一中的操作或使用向后按鈕來嘗試撤消一個在該列表上的操作(在一傳統(tǒng)型web應(yīng)用程序中,這兩者你也都希望避免發(fā)生)。
九、 添頭 我想介紹給你許多真正酷的東西,但是卻不會深入到細(xì)節(jié)中去討論。
Web頁面上載文件的功能經(jīng)常令一些用戶緊皺眉頭,因?yàn)橛脩粼谏陷d處理過程中,他不會收到任何反饋信息,除了屏幕上漏斗鼠標(biāo)在不停地轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)……通過使用Ajax技術(shù),你可以與服務(wù)器進(jìn)行通訊-在上傳過程中,可以檢索和顯示上傳的狀態(tài)。Sean Treadway和Thomas Fuchs實(shí)現(xiàn)了一個有關(guān)如何實(shí)現(xiàn)這種技術(shù)的現(xiàn)場展示,這是通過使用Rails和一個視頻來實(shí)現(xiàn)的。
另外,Rails使用的Prototype JavaScript庫也實(shí)現(xiàn)了大量的可視化效果。效果演示頁面上有一個這些效果的在線演示,其中包括JavaScript對使用之的調(diào)用。
十、 感想 自從孤立的web站點(diǎn)服務(wù)于靜態(tài)的頁面以來,Web已經(jīng)經(jīng)歷了一段相當(dāng)長的里程。如今,我們在慢慢地進(jìn)入到一個新的時代-站點(diǎn)動態(tài)地相互鏈接在一起,web API允許我們?nèi)菀椎卦谝延械姆?wù)上進(jìn)行這樣的創(chuàng)建,而且web用戶接口已變得越來越流暢和具有快速響應(yīng)性。很明顯,Ajax在如今已浮出水面的Web 2.0傳奇中將占有舉足輕重的地位。
無論如何,把復(fù)雜的Ajax特征增加到一個web應(yīng)用程序應(yīng)該是一堆相當(dāng)大量的工作,但是Rails使得所有這些變得太簡單了。