Подтвердить что ты не робот

Прерывание jQuery getJSON XMLHttpRequest

Оказывается, это был артефакт ошибки Firebug. Запрос Ajax был отменен, но Firebug продолжал сообщать об этом как активном. Подробнее здесь.


У меня уже давно работает XMLHttpRequests, и я должен быть в состоянии прервать их при определенных обстоятельствах.

Я установил запрос обычным способом:

ajax = $.getJSON(url + "?updates", function(data) { ...; });

Позже я хочу прервать этот запрос, кажется простым:

ajax.abort();

Когда я смотрю в Firebug, я вижу, что он все еще работает...

Я console.log вне значения ajax как раз перед тем, как попытаться и прервать его, он подтверждает, что его значение и XMLHttpRequest (с readyState 0).

Существуют ли ограничения на то, как и когда abort() запускается на XMLHttpRequest?

4b9b3361

Ответ 1

Вызов прерывания сбрасывает объект; обработчик события onreadystatechange удален, а readyState изменен на 0 (неинициализирован).

Я не думаю, что он отменяет сам запрос, он просто игнорирует любой ответ (манипулирует обработчиком событий), но я еще не пробовал его.

но он позволит вам повторно использовать объект - независимо от того, имеет ли браузер все поток, работающий со старым запросом.

Ответ 2

вы можете взглянуть на JSONP-Plugin С помощью этого плагина вы можете вручную отменить запрос. Также обратите внимание на "предостерегающее примечание" в технической библиотеке IBM:

Прежде всего, для вызовов JSONP нет обработки ошибок. Если динамическая вставка script работает, вы вызываетесь; если нет, ничего не происходит. Он просто терпит неудачу. Например, вы не можете поймать ошибку 404 с сервера. Вы также не можете отменить или перезапустить запрос.

Ответ 4

взгляните на jQuery AJAX Queue/Cache/Abort/Block Manager, возможно, это поможет вам предотвратить текущую ситуацию.