
Я не пробовал jQuery, и быстрый взгляд на документ на самом деле не говорит мне, как обрабатывается ответ перенаправления. Но в Prototype JS любой код ответа, отличный от 2xx «Success», является событием onFailure, поэтому перенаправление является ошибкой. Вероятно, вы могли бы проанализировать ответ (каким-то образом) в блоке ошибок, чтобы узнать, что это за код, и получить адрес, который вы можете установить для document.location в ... Но это звучит не очень безопасно или практично.
Чаще всего выводится какая-либо ошибка. Или, если запрос требует, чтобы пользователь вошел в систему, предположить, что время ожидания сеанса истекло, и выполнить перенаправление на страницу входа.
Вы должны проанализировать код и использовать Javascript для установки document.location
$.get('page.php', { GETvar : 'redirectUrl' }, function(data, textString){
if (textString == "succes") { //Succes!
document.location = data;
}
else{ // failure }
});
Если ваш PHP-скрипт возвращает действительный URL-адрес, он установит местоположение для этого URL-адреса.
РЕДАКТИРОВАТЬ
Вы также можете использовать скрытый iFrame, например:
html:
<iframe src = "blank.html" name='hiddenframe' id='hiddenframe' onload='readyLoad()'>
А затем используйте такой Javascript
var first = true;
function setRedirect (url) {
hiddenframe.location = url;
}
function readyLoad() {
if ( first == true ) { first = false; return false; }
else {
alert( 'ready loading, was redireced too:' + myFrame.location.href );
//Use new location code
}
}
Вы должны обернуть эту функцию в красивые маленькие обработчики событий, используя для этого встроенные функции jQuerys (они великолепны).
сервер отправляет местоположение перенаправления в заголовке, и я не могу найти способ получить ответ заголовка с помощью jquery ajax
Я не думаю, что вы можете отправить заголовок перенаправления через AJAX. AJAX сообщает, что код ответа 2 ## является успешным, а все остальные (например, код ответа перенаправления 3 ##) являются ошибками.
jQuery делает то, что от него ожидается: автоматически выполняет перенаправления и получает последнюю страницу.
Вы можете перейти на http://jigsaw.w3.org/HTTP/300/, чтобы проверить это. Откройте там firebug и вставьте jquery на страницу, отредактировав заголовок HTML и добавив
<script type = "text/javascript" src = "http://jqueryjs.googlecode.com/files/jquery-1.2.6.js"/>
к нему. Затем перейдите в консоль и запустите
$.get("http://jigsaw.w3.org/HTTP/300/301.html", function(r){
alert(r);
});
а в предупреждении отображается HTML-код перенаправленной страницы (это та же самая страница, на которой вы находитесь).
Ваш вопрос выглядит неоднозначным. Если вы хотите, чтобы браузер полностью перенаправлялся на новую страницу, Пим Ягер ответил на ваш вопрос.