Страницы: 1
Задача:
Выполняю 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 запрос!
Подскажите, что мне делать дальше? Без актуального статуса в этом поле я погиб...
Отсутствует
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);
Отсутствует
Страницы: 1