2010-10-27 104 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); 
}