PHP-Ajax и Redirect - PullRequest
       1

PHP-Ajax и Redirect

1 голос
/ 27 октября 2010

У меня есть запрос jjery Ajax на странице.На стороне php я проверяю, активна ли сессия и что-то делаю.Если сессия не активна, я хочу перенаправить пользователя на другую страницу в php (перенаправление заголовка).как мне это сделать.

Я знаю, как добиться этого в javascript (то есть, если session_fail, то измените window.location, но есть ли что-то, что я могу сделать в php / cakephp

Ответы [ 3 ]

6 голосов
/ 27 октября 2010

Переадресация только говорит: «Запрошенные вами данные можно найти здесь».

HTTP не может сказать «Даже если вы запросили ресурс для перехода внутрь страницы, вам следует покинуть эту страницу и перейтигде-то еще ".

Вам необходимо вернуть ответ, который ваш JavaScript понимает как" Перейти в другое место "и обработать его в своем собственном коде.

4 голосов
/ 27 октября 2010

Если я понимаю, что вы хотите, то вот как я это реализую.Он находится в Prototype вместо jQuery, но его перевод не займет много времени:

new Ajax.Request('process.php', {
    on401: function(response) {
        var redirect = response.getHeader('Location');
        document.location = redirect;
    }
});

В вашем PHP выведите следующее, если сессия неактивна:

header('Location: http://example.com/login.php', true, 401);
exit;
2 голосов
/ 27 октября 2010

Это то, что вы хотели бы видеть в своем php, если бы это был обычный запрос, а не AJAX

if (isset($_SESSION)) doSomething();  
else header("Location: otherUrl");

Поскольку это Ajax-вызов, вы не передаете управление php, а просто пытаетесь получить ответ, который (вероятно) заполняет определенный раздел вашей страницы. Вы не упоминаете, какую функцию jQuery ajax вы используете, но это имеет значение. Я полагаю, вы используете $ .get () или $ (element) .load () ??

Не зная подробностей, это мое лучшее предложение для вас.

Ajax call: $.get(url, callbackFunc);

php:

if(isset($_SESSION)) echoSomething()   else echo("redirect");

callbackFunc:

function(data)
{ if (data == "redirect") window.location = otherUrl;
   else 
   $("#desiredElement").html(data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...