ajax - jQuery.ajax() : discard slow requests

标签 ajax jquery

我已经使用 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/

相关文章:

javascript - 使用jquery隐藏div

javascript - 带有正则表达式的动态变量

php - 使用jquery vs php来减少负载

jquery - 如何正确使用 Html.Raw(Json.Encode(Model)) ?

javascript - 在用户登录过程中更改按钮类别和文本?

javascript - jQuery - 选择更改事件会导致选择框在 IE10 和 FF 中立即再次关闭

javascript - html 页面中的 Ajax 谷歌分析事件跟踪不起作用

javascript - 如果未加载则加载 jQuery - 失败的方法

javascript - 使用ajax从Javascript函数调用PHP函数

javascript - 将 JSON 响应转换为 map