2012-04-27 57 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);