JQuery AJAX - заставил браузер запрашивать новое местоположение в заголовке перенаправления

Может ли jQuery ajax заставить браузер запрашивать новое местоположение в заголовке перенаправления, отправляемом сервером?

Ваш вопрос выглядит неоднозначным. Если вы хотите, чтобы браузер полностью перенаправлялся на новую страницу, Пим Ягер ответил на ваш вопрос.

Lucas Pottersky 29.04.2010 18:48
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
3
1
19 209
3

Ответы 3

Я не пробовал 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

complez 28.11.2008 19:02

Я не думаю, что вы можете отправить заголовок перенаправления через AJAX. AJAX сообщает, что код ответа 2 ## является успешным, а все остальные (например, код ответа перенаправления 3 ##) являются ошибками.

Pim Jager 28.11.2008 19:38

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-код перенаправленной страницы (это та же самая страница, на которой вы находитесь).

Другие вопросы по теме