2010-10-20 54 views
1

在我的一個頁面上,我有一個使用ajax以異步方式加載內容的div。當會話過期時,用戶應該被重定向回到登錄屏幕。但是,當會話過期並觸發ajax調用時,登錄頁面將被放入div中。我想要的是將用戶重定向回登錄屏幕。當會話在ajax調用中過期時發回

回答

0

發送通知回到會話不再有效的JavaScript。當JavaScript獲得相應的錯誤時,請使用window.location = http://example.com/

2

解決此問題的一種方法是添加一個文本來唯一標識登錄頁面,並在AJAX回調中將其用於重定向到登錄頁面。下面是使用jQuery global callbacks一個示例代碼....

$(document).bind("ajaxComplete", function(event, response, ajaxOptions) { 
    if (response.status == 200 && response.responseText.match(/LOGIN_PAGE_UNIQUE_KEY/)) { 
     self.location = "/web/login?timeout=1"; 
     return false; 
    } 

}); 
+0

謝謝你的回覆。它工作正常 – vishnu 2010-10-21 05:59:14

+0

很高興我能幫到你。如果您喜歡答案並解決了您的問題,請點擊勾號接受答案。這將幫助其他人知道哪些可能是他們的問題的最佳解決方案 – 2010-10-21 12:41:08

+0

有趣的是,這對我們而言沒有添加任何種類的唯一密鑰。原因在於我們所做的ajax調用是MVC中的部分視圖,因此如果它們成功,responseText就是部分的html。但是,如果失敗,登錄屏幕將加載到div中,並且responseText將自動包含您插入的任何「LOGIN_PAGE_UNIQUE_KEY」,因爲腳本本身是在responseText中返回的。真棒。 – JPeG 2016-09-02 17:52:58

1

我認爲,擴展報頭是關鍵,登錄頁面可以發送額外的頭由XMLHttpRequest的處理程序被捕獲。

或者在一個更懶惰和不可靠的方法中,如果當前頁面的位置不是登錄頁面,那麼在登錄頁面上使用javascript,然後使用javascript重定向(它依賴於javascript,但是因爲您在製作xhr請求)。

+0

這似乎是一個很好的懶惰技巧。有人測試過這個嗎?感覺懶得去測試它。 – piyush 2012-05-17 12:05:35