PHP-Ajax и перенаправление

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

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

Если я понимаю, что вы хотите, то это то, как я это реализую. Это в 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; 

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

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

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

Это то, что вы хотели бы получить в своем 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:
функция (данные) {if (data == "redirect") window.location = otherUrl; else $ ("# wishElement"). html (data);}