Предотвращение дублирования Ajax запросов

Частенько при нажатии кнопки формы мы отправляем AJAX запрос. В большинстве случаев никто не предусматривает механизм, который предотвратит дублирование данного запроса, если пользователь случайно нажмёт на кнопку дважды. Рассмотрим вариант решения данной проблемы.

Как насчёт переменной-флага? Всё что нам нужно сделать, так это сбить значение флага при завершении AJAX запроса (в jQuery можем воспользоваться методом complete). Таким образом мы будем знать завершился ли прошлый запрос.

var requestSent = false;

jQuery("#buttonID").click(function() {
   if(!requestSent) {
      requestSent = true;

      jQuery.ajax({
         url: "http://example.com",
         ....,
         timeout: timeoutValue,
         complete: function() {
             ...
             requestSent = false;
         },
      });
   }
});

Так же вы можете выставить значение для опции timeout в запросе, который длится очень долго (в миллисекундах). Если время запроса выйдет, то сначала будет вызван метод error, а затем complete.

А как данную задачу решили бы вы?

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://stackoverflow.com/questions/2959640/stop-duplicate-ajax-submisions
Перевел: Станислав Протасевич
Урок создан: 3 Октября 2014
Просмотров: 13360
Правила перепечатки


5 последних уроков рубрики "jQuery"

^ Наверх ^