我創建了一個Facebook風格ajax搜索我的網站,當你鍵入它會帶來結果在你的搜索下面一個不錯的列表。Facebook風格AJAX搜索
$("#s").keyup(function() {
var searchbox = $(this).val();
var dataString = 's='+ searchbox;
if(searchbox!='') {
$.ajax({
type: "POST",
url: "/livesearch.php",
data: dataString,
cache: false,
success: function(html){
$("#display").html(html).show();
}
});
} else {return false; }
});
$("body").click(function() {
$("#display").hide();
});
問題在於這是有點無效,因爲用戶會鍵入一個單詞,例如「足球」。這將對服務器執行8個請求。什麼是更有效的方法來做到這一點?理想情況下,我認爲它應該在進行搜索之前存儲請求1秒,而不是立即進行搜索。但不是100%確定該怎麼做...
當然,你可以玩延遲值來找出最適合你的, 對我來說350m/s完美的作品...... 請記住,人們輸入的速度很快,並且每次輸入一個字母時超時會重置爲350ms – ekhaled 2009-10-14 22:24:06
另外,我建議在JS或w/HTTP中緩存結果 - 例如:deboun [500 ms暫停] cws [1000 ms暫停] [backspace] [backspace] [backspace] [500 ms暫停] ce'。如果沒有緩存,你會發送2個'deboun'的請求。 – Piskvor 2009-11-04 14:22:27
很棒!謝謝! – TaylorOtwell 2010-09-15 18:38:29