PHP- Ajax和重定向

时间:2010-10-27 13:01:48

标签: php ajax

我在页面上发生了一个jquery Ajax请求。在php方面,我正在检查会话是否处于活动状态并执行某些操作。如果会话未激活,我想将用户重定向到php中的另一个页面(标题重定向)。我该怎么做。

我知道如何在javascript中实现它(即如果session_fail然后更改window.location但是我可以在php / cakephp中做些什么

3 个答案:

答案 0 :(得分:6)

重定向只说“你要求的数据可以在这里找到”。

HTTP没有办法说“即使您要求资源进入页面,您应该离开该页面并转到其他地方”。

您需要返回您的JavaScript理解为“转到其他位置”并在您自己的代码中处理它的响应。

答案 1 :(得分:4)

如果我理解你想要发生什么,那么这就是我实现它的方式。它是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 :(得分:2)

这就是你想要的PHP如果这是一个有规律的请求,而不是一个AJAX

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

由于这是一个Ajax调用,因此您不会将控制权传递给php,而只是尝试获取(可能)填充页面特定部分的响应。你没有提到你使用的jQuery ajax函数,但它很重要。我想你会使用$ .get()或$(element).load()??

在不知情的情况下,这是我最好的建议。

Ajax电话:$.get(url, callbackFunc);

php:

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

callbackFunc:

function(data)
{ if (data == "redirect") window.location = otherUrl;
   else 
   $("#desiredElement").html(data);
}