Убить JQuery AJAX формы отправить - PullRequest
3 голосов
/ 23 февраля 2011

Я удаленно отправляю форму, возможно, несколько раз подряд. В этом конкретном случае дебасинг не вариант. Я ищу jQuery-эквивалент .abort() для удаленных форм, отправленных с использованием .submit(), поэтому я могу отменить все предыдущие представления, когда создается новая.

Спасибо заранее, Garrett

Ответы [ 3 ]

2 голосов
/ 17 декабря 2011

Я подключился к событию beforeSend формы, сохранил объект xhr как часть данных формы и прервал его, если новый запрос помещен в очередь:

$('form').bind("ajax:beforeSend", function(evt, xhr) {
  console.log('Enqueued new xhr request');
  var prevXhr = $(this).data('current-xhr');
  if (prevXhr) {
    prevXhr.abort();
    console.log('Aborting previous xhr request');
  }
  $(this).data('current-xhr', xhr);
});

И вы все еще можетеиспользуйте опцию :remote => true в простой форме.

1 голос
/ 23 февраля 2011

Может быть, вы могли бы использовать jQuery .queue () для постановки в очередь ваших отправок и .clearQueue () для очистки очереди при необходимости.Просто идея ...

0 голосов
/ 23 февраля 2011

Я не понимаю твою проблему. Если форма отправлена, запрос отправляется на сервер ... так, как вы можете прервать это?

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

Из API: http://api.jquery.com/category/ajax/ вы не можете этого сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...