jQuery $ .ajax, обработчик ошибок не работает

Здравствуйте, я заметил, что этот простой код не работает так, как должен работать ...

    function test() {
    $.ajax( {
        'url' : 'test/GameConfiguration.json',
        'dataType' : 'json',
        data : {
            a : 'aaa'
        },
        cache : false,
        method : 'get',
        timeout : 10000, //10 secs of timeout 
        success : function(data, textStatus, XMLHttpRequest) {
            console.log("success");
            if (data == null)
                console.log("it's not a real success");
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            console.log("error: " + textStatus);
        }
    });
}

Тест был запущен на локальном хосте, я имею в виду: я загружаю страницу, я закрываю локальный веб-сервер, затем я запускаю запрос (с помощью простой кнопки с onclick, указывающей на эту функцию). Ошибка никогда не вызывается, я получаю вызов обработчика успеха, который имеет textStatus = "success" и data = null. Я даже замечаю, что время ожидания запроса превышает 10 секунд. я получаю вызов обработчика успеха, который имеет textStatus = "success" и data = null. Я даже замечаю, что время ожидания запроса превышает 10 секунд. я получаю вызов обработчика успеха, который имеет textStatus = "success" и data = null. Я даже замечаю, что время ожидания запроса превышает 10 секунд. Это происходит в Firefox (последняя версия), Chrome (последняя версия) и Safari 5. Почему это? Это из-за того, что я работаю на localhost?


Я забыл сказать: запрос не кэшируется. Фактически, и firebug, и инструменты разработчика Chrome показывают отказ.


Большое обновление

Это поведение связано с использованием localhost. Фактически, если я загружаю эту страницу с другого компьютера коллеги и перед запуском запроса я отключаю свой компьютер от сети, я правильно получаю обработчик ошибок, запускаемый с тайм-аутом в качестве статуса. Думаю, это ошибка jQuery. Мне будет сложно проверить ошибки тайм-аута :(


Ребята с форумов jQuery говорят, что это связано с тем, как сетевой стек прерывает соединение, учитывая, что хост - localhost. Я тестировал это только на Windows 7. Если вы хочется протестировать это на других системах, и вы можете проработать некоторые внутренние компоненты jQuery, сообщите об этом сообщении на форумах jQuery:

http://forum.jquery.com/topic/strange-and-unexpected-behaviour-of-ajax-error-and-localhost#14737000001331961

9
задан gotch4 1 September 2010 в 22:08
поделиться

1 ответ

Даже если вы выключите локальный сервер, он все равно сможет увидеть файл json.. попробуйте временно удалить файл и посмотрите, сработает ли это.

-2
ответ дан 3 November 2019 в 05:33
поделиться
Другие вопросы по тегам:

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