2009-07-13 105 views
0

我在網站上工作,用戶得到一個30分鐘的cookie,並在其到期後,任何對服務器的調用重定向到「會話過期,請點擊這裏重新登錄屏幕。」以下是摺痕:jQuery AJAX蹦牀重定向

當用戶進入會話過期頁面時,該頁面的URL是他們嘗試訪問的頁面的URL。點擊「重新登錄」鏈接會將用戶帶到一個通用登錄頁面,該頁面使用推介URL(他們嘗試訪問的URL),將其返回到他們最初試圖去的地方,而不是通用「歡迎「屏幕。

所以,如果我對服務器進行AJAX調用,並告訴它填充響應的一些div,我會得到一個div中的「會話過期」頁面。

但是,我只有一次「會話過期」頁面。因此,例如,如果我有兩個窗口打開到同一個網站,並且我點擊了一個鏈接,我會得到會話過期錯誤。如果我切換窗口並點擊其他鏈接,我會得到通用登錄頁面。所以我只能看到「會話過期」頁面。現在

,我看了看這個問題:

How to manage a redirect request after a jQuery Ajax call

,並能夠做出真正顯著的進步,在我的理解,至少,但是從我所知道的,該解決方案已基本jQuery的誘捕響應並將頁面引用到通用登錄頁面。

我不確定這是否與我想要的一樣。首先,不清楚登錄頁面是否會始終將我的頁面(ajax頁面)視爲引薦。還有另一個問題,也許也不重要,但可以。

由於此蹦牀重定向(我希望這是正確的用語),POST數據在重新登錄後往往會打破反彈。它得到一個有關URL長度錯誤的服務器錯誤。

現在,我已經設置好了,如果服務器響應不是200,它會輸出xmlHttp響應,在第一次觸發時會得到一個「您正在重定向,是嗎?來自瀏覽器的警報。在第二次觸發時,我使用完整的HTML代碼獲取登錄頁面。 (這實際上取決於瀏覽器,Chrome只是吹捧)。

所以,我想要的東西,如果是可以做到的,就是三兩件事:

  1. 如果響應不是200,整個頁面應該返回XMLHTTP響應進行更換(如重定向,而不是一個地址,頁面服務器試圖重定向到),並

  2. 重定向/重繪頁面不應該有任何職位的數據,所以我想:

  3. 這應該全部作爲一個全局函數來完成在真正的查詢發生之前。

所以我越來越失去了對細微之處是:

如何將整個頁面重定向正確的(你要記住,我不能觸發頁面,一旦我得到重定向響應,因爲那樣我就不會得到「會話過期」頁面。)

如果我可以設置一個函數(AJAX事件,我相信),這將使測試要求所有的我的AJAX功能,而無需參考文本呼叫功能從每個AJAX功能。我在jQuery網站上的Ajax Events文檔中迷失了方向,因爲它好像有些時候聽起來像是自動的(就像無論我怎樣調用它,它都會運行),而其他時候它看起來像是一種使這種浮油的方法函數做它應該做的事情,但只記得那些記得問它的ajax函數。

最後一點,我感謝大家這一步誰已經閱讀:

這是很可能的是,會話過期窗口不給用戶又回到了他們從前期重認證附帶的頁面至關重要。其中一個目標是儘可能保持用戶體驗的完整性。雖然這個網站的普通用戶可能甚至不喜歡崩潰屏幕,但他們確實預測到了這一點,而從私人網站轉到普通的「用戶名/密碼」頁面將會分散注意力,甚至會對某些用戶產生影響。

回答

0

一個解決方案只是發生在我身上,但我仍然需要以消除該缺陷:

由於會話開始被存儲在cookie中,我能有一個功能,之前的任何Ajax請求,檢查看看cookie是否設置爲過期。如果是這樣,我可以重新加載他們所在的頁面,使用相同的URL,並且會打到會話過期的頁面。

+0

另一方面,我仍然想知道是否確實有辦法在服務器返回時將整個頁面推向重定向,而不必使用重定向URL(不是一個選項。) – Anthony 2009-07-14 03:07:59