Код ответа HTTP 0 указывает, что запрос AJAX был отменен.
Это может произойти либо из-за тайм-аута, аборта XHR или топания брандмауэра по запросу. Тайм-аут является обычным, это означает, что запрос не удалось выполнить в течение указанного времени. Аборт XHR сделать очень просто ... вы можете вызвать .abort () для объекта XMLHttpRequest, чтобы отменить вызов AJAX. ( Это хорошая практика для одностраничного приложения, если вы не хотите, чтобы вызовы AJAX возвращались и пытались ссылаться на объекты, которые были уничтожены. ) Как упоминалось в помеченном ответе, брандмауэр также мог бы отменить запрос и вызвать 0 ответ.
XHR Abort: Прервать Ajax-запросы, используя jQuery
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()
Стоит отметить, что запуск метода .abort () для объекта XHR также вызовет обратный вызов ошибки. Если вы выполняете какой-либо вид обработки ошибок, который анализирует эти объекты, вы быстро заметите, что прерванный XHR и тайм-аут XHR идентичны, но с jQuery textStatus, который передается обратному вызову ошибки, при прерывании будет «прерываться» и происходит «тайм-аут» с тайм-аутом. Если вы используете Zepto (очень похожий на jQuery), errorType будет «error» при прерывании и «timeout» при возникновении тайм-аута.
jQuery: error(jqXHR, textStatus, errorThrown);
Zepto: error(xhr, errorType, error);