2011-07-13 43 views
1

我在我的頁面上搜索了一個過濾器菜單,一個排序選項和一個Pagebrowser。客戶希望,如果他搜索某物並點擊某個產品,然後再次點擊「返回」或「搜索」,則會再次顯示相同的搜索和結果。有多個標籤頁的會話問題

我不想通過每個鏈接(壞的URL)的所有搜索參數,所以我將所有這些數據存儲在會話中。這工作正常,但有一個問題:

用戶打開搜索和按「size = big」過濾器,然後打開一個新選項卡並將過濾器更改爲「size = small」。現在他的會話中「size = small」。因此,如果他切換回第一個標籤並點擊「第2頁」,那麼他會看到第二頁,但不是像他預期的那樣「size = big」,而是「size = small」。

是否有一個很好的方法來解決這個問題,而不是通過所有的變量(很多!)?

+4

你如何定義「壞的網址」?通常將這些參數放入網址會更舒服,因爲這樣可以將書籤或電子郵件發送給鏈接。 – KingCrunch

+0

+1給KingCrunch。如果你按照你的建議去做,你會給自己帶來更多的問題。 – Nicolas

+0

現在這個鏈接非常好,例如:www.xy/category/product /,其中所有內容都更像/ category/product/search1/value1/search2/value2/page/sorting其中可能有11個不同的搜索參數。即使在主菜單鏈接中,這也必須是無處不在,並且這些鏈接必須在ajax事件上進行更改..這不是一個真正的好解決方案,我認爲 – Flo

回答

2

我強烈建議將搜索放入您的鏈接。它可能會讓你的鏈接更少»美麗«,但我討厭它,當我無法通過發送鏈接發送搜索結果給朋友。

但要回答你的問題:把search_id放在每一個形式,將其附加到URL。然後將該搜索保存在特定的search_id的會話中。當用戶刷新頁面時,您可以檢查POST搜索變量是否被傳輸,或者是否存在用於該特定的search_id的會話。

+0

如果你改變你的搜索結果重新加載ajax,所以你永遠不會看到搜索網址作爲用戶。 (但它可能會顯示給他的地方) 我也想過這樣的想法,但我怎麼知道什麼時候創建一個新的搜索ID。我不知道用戶是否改變了他的搜索,或者是否已經打開了一個新標籤,因此希望創建一個新的搜索?我當然可以爲一個新的搜索添加一個按鈕,但是人們可能會忽略它並改變它們的值來改變它們的搜索(特別是如果設置了很多變量並且他們只想改變它) – Flo

+0

@Flo,關於「*我將如何知道何時創建新的searchid *「 - 您可以在每個**搜索上創建新的搜索ID。例如,你有搜索#1,你打開它在另一個選項卡 - 現在你有兩個#1搜索。您在第一個選項卡中執行搜索 - 搜索#1替換爲#2,但在第二個選項卡中仍然有#1。當在第二個選項卡中執行另一個搜索時,搜索ID將從#1更改爲#3(因爲#2已位於第一個選項卡中)。這樣,當執行新搜索時,您可以從「上一個」搜索中獲得搜索參數,因爲您在該確切選項卡中執行了搜索ID。 – binaryLV

0

現在,瀏覽器在所有選項卡上實施Cookie,因此您不能在不同的選項卡上擁有不同的Cookie或會話。因此,存儲狀態的唯一方法是在url上。