>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >XMLHTTPRequest.status равен нулю http://forum.mozilla-russia.org/viewtopic.php?id=42300 |
Royan > 14-12-2009 20:57:49 |
Задача: Запрос выполняется при помощи 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 запрос! Подскажите, что мне делать дальше? Без актуального статуса в этом поле я погиб... |
zibloid > 14-12-2009 23:42:05 |
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); |