2012-05-24 69 views
1

我目前難住這一點。我窺探了一下,並沒有找到任何具體的答案只使用JS來做到這一點,所以我的問題是這樣的。如果我正在導航多個頁面並希望在附加到url之前保留查詢字符串,那麼執行此操作的最簡單方法是什麼?追加查詢字符串從多個頁面

+1

您可以使用cookies.Refer http://stackoverflow.com/questions/1253821/persist-javascript-variables-between-get-requests –

+0

我正在考慮它,但如果有人清除他們的緩存它將失去所有他們的數據到目前爲止。 –

+0

@CharlesLillo:這就是清除緩存的目的所在......查詢字符串不是用於數據傳輸的,你想要實現什麼功能? – Bergi

回答

0

如果用戶「瀏覽」的方式是使用頁面內的鏈接,則可以這樣做。

  1. 在一個給定的html頁面,使用Javascript在網頁中運行可以通過window.search屬性看到網址的查詢參數。 Mozilla docs.

  2. 然後使用JS修改頁面的所有錨元素的href鏈接,以將已有的查詢參數添加到鏈接。

結果:單擊頁面中的鏈接將導致新頁面同時具有現有和新的查詢參數。

+0

這就是我最初的想法。如果沒有簡單的方法,我可能會最終這樣做。我有一種感覺,這是唯一的方法。 –

+1

您唯一的選擇是在服務器上使用這個,cookies或維護狀態。請注意,用戶可以(也可以)編輯這些網址。此外,URL /查詢參數長度也有限制。 –

0

我不認爲有一個簡單的方法。每次編寫URL或創建表單時,您都必須考慮當前的查詢參數。

+0

我能想到的唯一方法就是編寫一個腳本來抓取下一個查詢字符串並將其附加到最後一個字符串中,並持續這樣做。 –

+0

@CharlesLillo請你詳細說明一下嗎? –

+0

從某種意義上講@LarryK說的,但我試圖避免這種情況。 –

0

你問這個嗎?

var url1 = "...", url2 = "..."; 

var query1 = url1.split("#")[0].split("?").slice(1).join("?"); 
if (!query1) 
    return url2; 
var parts2 = url2.split("#"); 
parts2[0] += (parts2[0].indexOf("?")>-1 ? "&" : "?") + query1; 
return parts2.join("#"); 

這從url1提取查詢字符串,並將其追加的url2查詢字符串,返回新url2

相關問題