例如在用户输入一些文本时的搜索表单中,当时,AJAX请求应该在每个关键事件上发送,搜索关键字作为查询字符串。搜索键将是输入框中的值。如何避免keyup事件的连续ajax请求的开销?
如果用户输入“ABCD”,在这种情况下,前3个AJAX请求应该得到杀/取消,因为在第四AJAX请求searchkey将是“ABCD”
$(document).ready(function(){
$("#searchInput").keyup(function(){
ajaxSearch($("#searchInput").val());
});
});
在我打电话以下keyup事件“ ajaxSearch()“函数。
function ajaxSearch(searchKey) {
$.ajax({
type: "get",
url: "http://example.com/ajaxRequestHandler/",
data: "action=search&searchkey=" + searchKey
}).done(function() {
/* process response */
});
}
这将工作,但考虑如果服务器需要5秒钟来返回数据,在这5秒内,您可以处理5000/300请求,这取决于按键延迟,这将导致所有如果处理不当,会出现一些问题。因此,当另一个键入事件被触发时,您需要一种中止先前请求的方式。 – Mindless 2016-06-08 03:05:46