Прервать Ajax-запросы, используя jQuery

RFC 3986 подробно описывает синтаксические компоненты . Часть, на которую вы ссылаетесь, будет [ (http) и авторитет (www.example.com:9090).

1752
задан Benjamin Gruenbaum 3 July 2014 в 13:31
поделиться

4 ответа

Большинство методов Ajax jQuery возвращает XMLHttpRequest (или эквивалент) объект, таким образом, можно просто использовать abort().

См. документацию:

var xhr = $.ajax({
    type: "POST",
    url: "some.php",
    data: "name=John&location=Boston",
    success: function(msg){
       alert( "Data Saved: " + msg );
    }
});

//kill the request
xhr.abort()

ОБНОВЛЕНИЕ: С jQuery 1.5 возвращенный объект является оберткой для собственного объекта XMLHttpRequest, названного jqXHR. Этот объект, кажется, представляет все собственные свойства и методы, таким образом, вышеупомянутый пример все еще работает. См. Объект jqXHR (документация API jQuery).

ОБНОВЛЕНИЕ 2: С jQuery 3, ajax метод теперь возвращает обещание с дополнительными методами (как аварийное прекращение работы), таким образом, вышеупомянутый код все еще работает, хотя возвращаемый объект не xhr больше. Посмотрите 3,0 блога здесь .

ОБНОВЛЕНИЕ 3 : xhr.abort() все еще работы над jQuery 3.x. Не принимайте , обновление 2 корректно. [Еще 1110] информация о jQuery репозиторий GitHub .

1688
ответ дан Marcos Pérez Gude 3 July 2014 в 13:31
поделиться

Это асинхронное запрос, означая, как только это отправило, это там.

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

Иначе, просто проигнорируйте ответ Ajax.

72
ответ дан Yuval Adam 3 July 2014 в 13:31
поделиться

Вы не можете вспомнить запрос, но можно установить значение тайм-аута, после которого будет проигнорирован ответ. Посмотрите этот страница для опций AJAX jQuery. Я полагаю, что Ваш ошибочный обратный вызов назовут, если период тайм-аута будет превышен. По каждому запросу Ajax уже существует тайм-аут по умолчанию.

можно также использовать аварийное прекращение работы () метод на объекте запроса, но, в то время как это заставит клиент прекращать прислушиваться к событию, это <забастовка> может , вероятно, не будет мешать серверу обработать его.

111
ответ дан tvanfosson 3 July 2014 в 13:31
поделиться
  • 1
    Также... регистрация, какие суммы к тому же отрывку кода многократно в течение того же периода времени считают немного спамными также. – Kev 25 July 2012 в 00:03

решение meouw корректно, но если Вы, интересуются большим количеством управления тогда, Вы могли бы попробовать плагин менеджера по Ajax для jQuery.

20
ответ дан Community 3 July 2014 в 13:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: