javascript - 禁用 AJAX 请求直到完成?

标签 javascript jquery ajax

我正在使用一个稍微修改过的 jQuery 自动完成插件,

它只是简单地更改为从 MySQL 数据库获取 JSON 对象而不是某个数组。

但是,我注意到单击输入字段后,它会发送一个新请求,与之前的请求相同。 如果我再次单击另一个,许多快速单击很快就会开始形成一个可怕的问题...没有什么可以阻止它每秒发送无限量的请求。

所以,因为我将请求发送到特定的地方,并且该地方不应该两次处理相同的请求, 如果输入字段包含与上次请求相同的字符串,如何阻止它发送新请求?

这就是我从哪里获得修改后的插件:

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

最佳答案

您需要放入一个互斥信号量,只是一个知道请求是否正在主动进行的标志,这样您就不会触发新请求,而是检查是否存在事件请求,只有在没有事件请求时才继续。

var inProgress = false;

$('selector').click(function() {
  if (!inProgress) {
     inProgress = true;
     ajaxRoutine();
  }
});

function ajaxRoutine() {
   ...
   inProgress = false;
   return;
}

关于javascript - 禁用 AJAX 请求直到完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542613/

相关文章:

javascript - JSON 不返回对象

javascript - 如何从javascript中的两个日期获取天数和精确分钟数、精确小时数?

javascript - Ajax "Is there new content? If so, update page"- 如何在不破坏服务器的情况下执行此操作?

javascript - Ajax 和 VbScript : fetching Post variable in test. asp

javascript - 当数据库更改时,如何使用 ajax php 和 mysql 更新 <div> ?

javascript - 无法弄清楚如何将零添加到增量函数

javascript - 在 MVC5 中使用 Action 执行 ajax 调用

javascript - 为什么 JavaScript 中没有内置方法来检查对象是否为普通对象?

javascript - e.preventDefault() 在与 bootbox 和 jQuery.post() 一起使用时不起作用

json - 通过 paypal.request.post() 从 PayPal checkout.js 发送 json