2011-03-22 32 views
1

我有兩個HTML頁面。輸入少量輸入後,用戶將從第一頁重定向到第二頁。在將用戶重定向到第二個HTML頁面(使用window.location =「new HTML URL」)之前,我使用document.cookie DOM API在Cookie中堅持少量用戶輸入。兩個HTML頁面之間的HTTP cookie

當我在第二個HTML頁面中時,我無法從此cookie檢索值。我認爲,因爲文檔對象會在新的HTML頁面中發生變化,所以我的Cookie值變得無法訪問。

有人可以告訴我:如何從一個JavaScript持久保存的cookie的值在其他HTML頁面的一個HTML頁面中檢索,即Cookie由HTML A的javascript在HTML B的javascript中寫入?

我沒有任何服務器端代碼,所以我無法利用服務器端邏輯。此外,我不應該通過URL中的值。所以我需要一個解決方案在純JavaScript和HTML。

如果有人有更好的解決方案,請讓我知道。由於

+0

你不能使用任何類似ASP,PHP或JSP的東西?那些將解決這個問題。期。 – 2011-03-22 13:36:02

+0

只要域和路徑沒有變化,而且您沒有設置過期日期太短(或負值),則在一個頁面上設置和通過另一個頁面讀取時應該沒有問題。請給我們一些關於這兩個頁面的信息,例如域和路徑,以及一些用於讀取/寫入cookie的代碼。自2005年以來,我一直維護着一個開源的JavaScript cookies庫,所以我應該可以幫助您獲得體面的信息。 – JAAulde 2011-03-22 13:38:15

+2

@Tanner Ottinger - 「那些將解決問題的時期」並沒有多大意義。無論代碼來源/來源如何,相同的限制都適用於Cookie。此外,您沒有解釋這些服務器平臺中的一個如何解決問題。 – JAAulde 2011-03-22 13:39:44

回答

3

嘗試使用localStorage的,而不是餅乾,

// set your values in the first page 
localStorage.setItem('itemKey', 'values'); 

// on the second page, retrieve them 
var values = localStorage.getItem('itemKey'); 

可以使用jStorage插件跨瀏覽器的行爲。

同時參閱本question用於存儲對象而不是字符串

+0

我假設localStorage是一個HTML5解決方案。我對麼?我們的標準瀏覽器不支持HTML5。這種解決方案在這種情況下也能工作嗎? – user131476 2011-03-22 14:05:49

+0

這個概念與非HTML5瀏覽器(例如IE)一樣,但是具有不同的實現方式,您仍然可以使用jStorage插件作爲接口,並且它會爲您處理存儲,如果您引用其網站,他們提到IE7和IE6可以存儲值高達128kb,如果有幫助 – 2011-03-22 14:10:08

+0

我試過jstorage。我使用此鏈接http://www.jstorage.info/test?type=prototype向jstorage添加了一個鍵值對。我用一個按鈕創建了另一個HTML頁面,並附加了一個javascript函數,該函數將返回基於該密鑰的值。這是我的JavaScript函數的內容。 var value = $ .jStorage.get(「test」); alert(value);但警報框顯示爲空。難道我做錯了什麼?我在我的HTML頁面中使用jstorage.js和prototype.js。 – user131476 2011-03-23 10:02:17

1

JAAulde是與他的回答一點。

對於OP想要做類似PHP的事情會很好,在這種情況下,我不會爲了在兩個頁面之間傳遞數據而打擾cookie,這很愚蠢。但是,如果需要真正的持久性,並且數據要求很簡單,即使使用PHP等語言,Cookie也是一種方法。

這些都是相當嚴格的約束,這是一個類項目嗎?也就是說,沒有任何其他方法可以做你正在嘗試的東西,除了一個醜陋而且非常不安全的DOM破解之外。