[討論] 實做立即搜尋

看板Ajax作者 (clonn)時間13年前 (2010/09/17 03:37), 編輯推噓5(5024)
留言29則, 6人參與, 最新討論串1/1
今天突然看到有人實做youtube 的立即搜尋, 經過來回查看之後,自己也沒有想太多,就模擬了一個demo (code & html 都沒有調整就直接寫) 網址: http://clonn.byethost24.com/ 因為資料取自 知識+ API Javascript library使用 YUI3 感覺上幾乎都是Key event綁定。 想跟大家討論一下,如果真的要實做instant 效果。 不知道後端和前端要做什麼樣的調校!?? 感覺是一個蠻有趣的議題,希望寫這個東西引起大家興趣討論。 -- 猜透女生的心意,比處理別人的bug還難 To guess girls' thought is more difficult than debug. << http://clonn.blogspot.com/ >> 噗 http://www.plurk.com/clonn 浪 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.184.5.198

09/17 11:55, , 1F
這個翻譯不是很好... QQ
09/17 11:55, 1F

09/17 15:24, , 2F
09/17 15:24, 2F

09/17 15:28, , 3F
主要是資料的讀取更頻繁 看回應的方式有什麼要調整?
09/17 15:28, 3F

09/17 18:27, , 4F
所以你的方式,並不是key press???
09/17 18:27, 4F

09/17 22:08, , 5F
是啊 不然還能怎麼做..
09/17 22:08, 5F

09/18 01:34, , 6F
可是感覺key press 蠻浪費資源的XD,正在想其他解法
09/18 01:34, 6F

09/18 01:35, , 7F
每2~3秒檢查一次啊~如果值不一樣再查詢讀取
09/18 01:35, 7F

09/18 01:37, , 8F
當然你也可以 key press 之後才啟動 timer ~
09/18 01:37, 8F

09/18 01:38, , 9F
每key press 一次,就把 timer count down 設回預設
09/18 01:38, 9F

09/18 02:07, , 10F
有timer就不及時了 應該是值有改變就要讀取
09/18 02:07, 10F

09/18 02:08, , 11F
不過可以試試只送3秒內最新的查詢 若3秒內只有一筆就不取消
09/18 02:08, 11F

09/18 02:09, , 12F
若是多筆 就取消之前的讀取
09/18 02:09, 12F

09/18 02:10, , 13F
要可以取消 意味著查詢有delay 沒馬上送出
09/18 02:10, 13F

09/18 03:59, , 14F
目前程式有更改,採用timer的方式處理。
09/18 03:59, 14F

09/18 03:59, , 15F
request 變少了,會慢嗎?肉眼似乎感覺不出來XD
09/18 03:59, 15F

09/18 04:00, , 16F
啟動timer,一樣使用key press!程式碼內詳!
09/18 04:00, 16F

09/18 04:02, , 17F
剛剛測試了一下chrome、Fx、IE,都可以正常執行,太好了:D
09/18 04:02, 17F

09/18 11:57, , 18F
這又沒很難 也可以流行
09/18 11:57, 18F

09/18 12:47, , 19F
觸碰螢幕也不難啊 技術以前就有了 最近才流行 時機對了
09/18 12:47, 19F

09/18 13:15, , 20F
對ie7 來講好像並不立即 ...XD
09/18 13:15, 20F

09/18 13:15, , 21F
話說 key press 只要偵測上一個查詢的字不是同一個字,其實
09/18 13:15, 21F

09/18 13:15, , 22F
就還好,畢竟所謂立即就是用資源換時效。
09/18 13:15, 22F

09/18 18:21, , 23F
嗯!~不過就要一直request,感覺不好!!正在想其他方式
09/18 18:21, 23F

09/18 18:27, , 24F
你也可以給一個 buffer time啦 :~
09/18 18:27, 24F

09/18 18:28, , 25F
如果他隔0.5秒沒繼續輸入再查之類的
09/18 18:28, 25F

09/18 18:28, , 26F
這可以很簡單的用一個變數來作到
09/18 18:28, 26F

09/18 21:56, , 27F
目前是用這樣的方式實做,不過相對的buffer timer就不即時了
09/18 21:56, 27F

09/19 00:24, , 28F
要即時有要query少,除非你猜得到使用者的輸入預先抓一堆XD
09/19 00:24, 28F

09/19 13:07, , 29F
那就稱為預知搜尋,真是個偉大的發明!
09/19 13:07, 29F
文章代碼(AID): #1Cad7jQl (Ajax)