XMLHttpRequest.status всегда возвращает 0 - PullRequest
3 голосов
/ 02 мая 2010

HTML

<a href="#" onclick="MyObj.startup()">click me</a>

код JS

var MyObj = 
{
    startup : function()
    {
        var ajax = null;
        ajax = new XMLHttpRequest();
        ajax.open('GET', 'http://www.nasa.gov', true);
        ajax.onreadystatechange = function(evt)
        {
            if(ajax.readyState == 4)
            {
                if (ajax.status == 200)
                {
                    window.dump(":)\n");
                }
                else
                {
                    window.dump(":(\n");
                }
            }
        }
        ajax.send(null);
    }
}

ajax.status всегда возвращает 0, независимо от того, на каком сайте он находится, независимо от того, что является действительным кодом возврата. Я говорю фактическое, потому что ajax.statusText возвращает правильное значение, например, OK или Redirecting ...

ajax.readyState также возвращает правильные значения и 4 в конце.

Ответы [ 2 ]

4 голосов
/ 02 мая 2010

Вы можете легко преодолеть это в локальной среде, настроив прокси php (xampp сервер и передать строку запроса для URL-адреса, который вы хотите получить). Сделайте так, чтобы ваш php-прокси получил URL и повторил его содержимое. Таким образом, ваш локальный html-файл (при просмотре как http://localhost/your.html) может отправлять ajax-запросы вне домена весь день. Только не ожидайте, что контент будет работать так, как если бы он был локальным для этого домена.

3 голосов
/ 02 мая 2010

Является ли ваш сайт частью http://www.nasa.gov/? В противном случае XMLHttpRequest завершится ошибкой из-за Одинаковой политики происхождения .

Также, если страница обслуживается как не HTTP-запрос, status может быть 0. См. https://developer.mozilla.org/En/Using_XMLHttpRequest#section_3.

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