2010-07-22 58 views
0

我正在一個大網站上工作,並在該網站上有一個搜索模塊。搜索是通過使用大量用戶提交的值完成的,因此在分頁中,我必須將所有這些數據傳遞到下一頁,並將值附加到url使url非常大。我應該使用javascript進行頁面提交嗎?

Sso我該如何解決這個問題?我打算使用基於JavaScript的頁面提交(POST),隱藏字段中的所有值到下一頁,以讀取下一頁中的所有值。

它會導致任何問題?或者我應該使用數據庫來保持搜索標準?

+0

你有一個cookie的4K。夠了嗎? – mplungjan 2010-07-22 08:26:22

+0

如果我將所有用戶用戶提供的值存儲在cookie中,它會好嗎? – milan 2010-07-22 08:28:33

回答

0

爲了使用分頁進行可靠的搜索,我們需要做的比平常多一點。

我們需要處理以下情況。

  1. 一旦搜索完成,用戶可以選擇做瀏覽器前進和後退。在這裏,如果您在每個頁面上進行表單提交,這將是一個超載。另外,如果用戶按下瀏覽器刷新按鈕,則會不必要地提醒他數據正在提交。

  2. 在一個大型數據庫上搜索有很多標準是昂貴的。因此,優化很重要。

所以,你應該做到以下幾點:

  1. 提交關於每一頁變化
  2. 數據不存儲在cookie數據。 (這不安全,甚至不可靠。)
  3. 對於具有複雜查詢的大型數據庫,將結果緩存在會話中。
  4. 如果您需要非常及時的實時結果,請忽略點(3)並嘗試對每個頁面進行部分搜索。

因此,對於你的情況,你可以做到以下幾點:

  1. 當用戶搜索一次,使表單POST數據到一個搜索頁面。
  2. 此搜索頁面將在會話中存儲搜索查詢併爲其生成唯一的ID。
  3. 現在渲染結果頁面。結果頁面將傳遞搜索ID(在點2中生成)和頁碼。示例result.aspx?searchId = 5372947645 & page = 2
  4. 結果頁面會使用searchId查看來自會話的查詢,然後根據發送的頁碼提供結果。
0

使用隱藏字段和POST方法應該也可以,除非您能夠在下一頁右側獲取它們。

0

爲了補充Sarfraz的答案...

這是沒有必要使用JavaScript來進行POST。

<form action="destination_url" method="POST"> 
    ... 
</form> 
+0

我的計劃是在用戶點擊分頁編號(1,2,3,4 ...)時提交頁面,這些元素必須是鏈接,我的計劃是在有人點擊頁面時提交頁面,因爲那些鏈接我們必須調用一個javascript函數來提交頁面, – milan 2010-07-22 08:30:16

1

我想創建一個服務器端的對象,可能與後端數據庫是由不同的頁面更新。

這是我認爲最清楚和最簡單的解決方案。通過post或者javascript或者cookie來給頁面提供參數也能起作用,但這對我的經驗來說更是一個怪癖。

此外,如果搜索查詢非常複雜以至於需要多個頁面才能創建它,那麼用戶可以將所有數據存儲在服務器上,以便他可以通過在不同的頁面。

1

當初始搜索被觸發時,我會在服務器上的某種會話存儲中存儲所有搜索標準。

對於分頁,我會從會話存儲檢索標準,然後只顯示適當的結果。此外,我還會在分頁鏈接中添加某種關鍵字(因此這將是唯一隱藏的後期字段),在這種關鍵字下可以找到搜索標準。

即使會話是每個用戶,您可能會在同一個會話中打開多個搜索窗口,但您不想將它們與分頁混淆。

相關問題