我已经使用 jQuery.ajax() 方法构建了实时搜索。在每个 keyup 事件中,它都会从服务器接收新的结果数据。
问题是,当我打字速度非常快时,例如“foobar”和“fooba”的GET请求比“foobar”请求需要更多的时间,显示“fooba”的结果。
我认为用超时参数来处理这个问题是不可能的。
有人知道如何解决这个问题吗?
最佳答案
您可以存储和.abort()
开始新请求时的最后一个请求,如下所示:
var curSearch;
$("#myInput").keyup(function() {
if(curSearch) curSearch.abort(); //cancel previous search
curSearch = $.ajax({ ...ajax options... }); //start a new one, save a reference
});
$.ajax()
方法返回 XmlHttpRequest对象,因此只需捕获它,当您开始下一个搜索时,中止上一个搜索。
关于ajax - jQuery.ajax() : discard slow requests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3047672/