Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№114-12-2009 20:57:49

Royan
Участник
 
Группа: Members
Зарегистрирован: 14-12-2009
Сообщений: 1
UA: Firefox 3.5

XMLHTTPRequest.status равен нулю

Задача:
Выполняю ajax запрос методом GET, если пришел статус 302 надо сообщить пользователю об этом

Запрос выполняется при помощи JQuery, примерно так

Выделить код

Код:

$.ajax({
    type: "GET",
     url: "restricted.jsp",
     async: true,
     dataType: "json",
     success: function (xhr, textStatus, errorThrown) {
         alert(xhr.status); // called only for authorized users
     },
     error: function (xhr, textStatus, errorThrown) {
         alert(xhr.status); // xhr.status = 0
         if(xhr.status == 302) {
             // tell user he is not authorized
         }
     }
});

Ресурс restricted.jsp, как не трудно догодаться доступен только для авторизованных пользователей. Для всех остальных на сервере происходит редирект на страницу логина. Когда это произошло от сервера приходит ответ с HTTP статусом 302 (в любом снифере видно и firebug тоже самое говорит) в этот-то момент мне и надо напомнить пользователю, что он не авторизован, а сделать это правильно можно только при помощи правильного значения в поле XMLHTTPRequest.status, а оно то и равно нулю, т.е. if(xhr.status == 302) никогда не отрабатывает т.к. в поле status ноль

Оказалось ноль действительно записывается, но только если запрос выполняется к локальному файлу (протокол file:/// или ftp://) https://developer.mozilla.org/En/Using_XMLHttpRequest, но у меня то валидный HTTP запрос!

Подскажите, что мне делать дальше? Без актуального статуса в этом поле я погиб...

Отсутствует

 

№214-12-2009 23:42:05

zibloid
Участник
 
Группа: Members
Зарегистрирован: 22-08-2009
Сообщений: 16
UA: Foxware 0.0

Re: XMLHTTPRequest.status равен нулю

Royan, а что если взамен свойства status истользовать statusText ???
Например:

Выделить код

Код:

var x = new XMLHttpRequest();
x.onreadystatechange = function()
{
    if(x.readyState == 4)
    {
       if(x.status == 302)
       {
           alert('302');
       }
       if(x.statusText == 'Found')
       {
           alert('Found');
       }
    }
}
x.open('GET','http://www.google.ru',true);
x.send(null);

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]