2010-10-27 71 views
1

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

我知道如何去实现它在JavaScript(即如果session_fail然后更改了window.location但有东西,我可以在PHP做/ CakePHP的

回答

4

如果我明白你想要发生什么,那么这就是我如何实现它。它在原型,而不是jQuery的,但它不应该带你长的翻译:

header('Location: http://example.com/login.php', true, 401); 
exit; 
6

重定向只说:“您所请求的数据可以在这里找到” 。

HTTP提供没有办​​法说“即使你请求的资源去一个页面内,你应该要离开这个页面,去别的地方”。

您需要返回你的JavaScript能够理解的响应意思是“转到不同的位置”并在您自己的代码中处理它。

2

这是你想要的东西:

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

在你的PHP,输出如果会话处于非活动状态下在你的PHP如果这是常规的请求,并没有AJAX

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

因为这是一个Ajax调用,你是不是把控制权交给PHP,但只是想获得一个响应(可能)填补了汉邦你的页面的cular部分。你没有提到你使用的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); 
}