5
我用下面的代碼(written by another user)扼殺在實況搜索功能Ajax請求:如果你喜歡一個演示途徑AJAX限制請求
的jsfiddle:http://jsfiddle.net/4xLVp/
看來馬車,雖然。使用Ctrl+shift+back-arrow
清除值,然後再次輸入會導致一系列請求。空白值也會導致請求。它看起來似乎不錯,特別是與jQuery UI autocomplete相比,請求延遲似乎更多地被測量。
$('##tag-search').keyup(function() {
var elem = $(this);
if (elem.val().length >= 2) {
elem.data('search',search).clearQueue().stop().delay(1000).queue(function() {
$.ajax({ // ajax stuff
'success': function(data){ /*show result*/ }
});
if (elem.data('search') != string) return;
});
} else if (string.length <= 1) { /*show original content*/ }
});
有沒有更好的方法來處理這個問題?
謝謝。這就是訣竅,我很驚訝這很簡單。你能解釋一下clearTimeout()做什麼以及爲什麼需要它? – Mohamad
setTimeout - 設置一段時間後將執行的代碼,clearTimeout - 刪除該待執行的代碼,在啓動新代碼之前需要清除更早的請求ajax請求 –
順便說一句 - 我不建議刪除if(elem.data('搜索')!=字符串)返回;'部分,它可以防止更早的Ajax調用(持續更長時間)更新已經改變的結果 –