Отключить AJAX-запрос до завершения? - PullRequest
1 голос
/ 28 декабря 2010

Я использую слегка модифицированный плагин jQuery Autocomplete,

это просто изменено для получения объекта JSON из базы данных MySQL вместо некоторого массива.

Однако я заметил, что при нажатии на поле ввода будет отправлен новый запрос, такой же, как предыдущий. И если я нажму еще раз, и много быстрых щелчков быстро начнут создавать ужасную проблему ... Ничто не мешает ему посылать неограниченное количество запросов в секунду.

ТАК, поскольку я отправляю запрос в определенное место, и это место никогда не должно обрабатывать один и тот же запрос дважды, как я могу остановить отправку нового запроса, если поле ввода содержит ту же строку, что и последний запрос?

И вот откуда я получил модифицированный плагин:

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

1 Ответ

1 голос
/ 28 декабря 2010

Вам нужно вставить мьютекс-семфор, просто флаг, который знает, активно ли выполняется запрос, так что вместо запуска нового запроса вы проверяете, существует ли активный запрос, и только продолжаете, если нет.

var inProgress = false;

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

function ajaxRoutine() {
   ...
   inProgress = false;
   return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...