jQuery AJAX - сделал запрос браузера новым местом в заголовке перенаправления - PullRequest
3 голосов
/ 28 ноября 2008

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

Ответы [ 3 ]

3 голосов
/ 28 ноября 2008

Вы должны разобрать код и использовать Javascript, чтобы установить document.location

$.get('page.php', { GETvar : 'redirectUrl' }, function(data, textString){  
 if (textString == "succes") { //Succes!
  document.location = data;
 }
 else{ // failure }
});

Если ваш PHP-скрипт возвращает действительный URL-адрес, это установит его местоположение.

EDIT
Вы также можете использовать скрытый 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 (они великолепны).

3 голосов
/ 28 ноября 2008

jQuery делает то, что от него ожидают: автоматически выполняйте перенаправления и переходите на последнюю страницу.

Вы можете перейти к http://jigsaw.w3.org/HTTP/300/, чтобы проверить это. Откройте там firebug и вставьте jquery на страницу, отредактировав HTMLhead и добавив

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

0 голосов
/ 28 ноября 2008

Я не пробовал jQuery, и быстрый просмотр документа не говорит мне, как обрабатывается ответ на перенаправление. Но в Prototype JS любой код ответа, кроме 2xx «Success», является событием onFailure, поэтому перенаправление является ошибкой. Возможно, вы могли бы проанализировать ответ (каким-либо образом) в блоке ошибок, чтобы увидеть, что это за код, и получить адрес, для которого вы можете установить document.location в ... Но это звучит не очень безопасно или практично.

Чаще всего распечатывается какая-либо ошибка. Или, если для запроса требуется зарегистрированный пользователь, предположить, что время сеанса истекло, и перенаправить на страницу входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...