禁用AJAX请求直到完成?

时间:2010-12-27 23:31:35

标签: javascript jquery ajax

我正在使用一个略有修改的jQuery Autocomplete插件,

它只是更改为从MySQL数据库而不是某些数组中获取JSON对象。

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

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

这是我从以下位置获得修改过的插件的地方:

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

1 个答案:

答案 0 :(得分:1)

您需要输入一个互斥锁,只需一个知道请求是否正在进行中的标志,这样您就可以检查是否存在活动请求,而不是触发新请求。

var inProgress = false;

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

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