2012-04-27 56 views
0

如果我有一個搜索框會加載每個關鍵事件的建議。我認爲,對於我的服務器來說,每個關鍵事件的每個請求都會有一秒鐘或更多的時間響應10次,這對我來說是最糟糕的。我的意思是應該有一些限制每秒(s)或任何特定時間的請求的AJAX請求限制功能。你能通過編碼示例告訴我如何限制ajax請求嗎?如何限制每個自定義時間的AJAX請求

第二件事,我想分享一下,如果我們使用JSP來限制AJAX請求。將JSP作爲客戶端語言並且惡意用戶可以輕鬆地刪除那些限制Ajax請求的函數並使服務器失效是否是一個好主意。

或!這有什麼補救嗎?

感謝您的閱讀。

+0

請不要把兩個不相干的查詢,在一個問題。 – Alnitak 2012-04-27 13:46:58

+0

[等待函數直到用戶停止輸入]的可能的重複(http://stackoverflow.com/questions/10124114/wait-for-function-till-user-stops-typing) – Alnitak 2012-04-27 13:47:52

回答

0

您需要設置一個計時器,每次發生按鍵事件時都會進行重置。如果沒有按鍵直到計時器結束,然後發送你的ajax請求。

1

你可以通過你自己寫去抖方法:

var timer = null; 
searchInput.addEventListener('keyup', function (evt) { 
    clearTimeout(timer); 
    timer = setTimeout(function() { 
     // this event listener will postpone its execution until after 1 second have elapsed since the last time it was invoked 
     // send your ajax request here 
    }, 1000); 
}, false); 

或者您可以使用underscore限制keyup事件:

searchInput.addEventListener('keyup', _.debounce(function (evt) { 
    // this event listener will postpone its execution until after 1 second have elapsed since the last time it was invoked 
}, 1000), false);