2011-08-16 19 views
13

我有一個類似的情況如下:我怎麼能存儲在某種程度上保存,這樣我可以用它JavaScript的數組對象後

我有一個ID選擇頁面,用戶可以從在page.When所示的ID選擇ID用戶選擇我將它們作爲逗號分隔值存儲在隱藏的輸入字段中。

 <input type="hidden" values="234,678,987" /> 

我有一個按鈕,點擊後彈出一個對話框,然後顯示選定的ID。這裏顯示的ID是我從隱藏的領域獲取的。 現在我有一個存儲產品ID和名稱的要求。所以在這種情況下,我應該怎麼做,因爲現在我無法在隱藏的輸入字段中保存這個數據結構。即使我使用javascript數組,我如何保存該數組並將其用於未來顯示。是否有可能將數組對象保存在隱藏的輸入字段....並稍後再次檢索數組對象...?

+0

你會去你的網站上的不同頁面? – vol7ron

+0

將它存儲在cookie中 –

+0

是的..我要去不同的頁面。 – user882196

回答

26

這裏有一個JSFiddle

如果你想存儲在一個輸入字段的對象,你可以使用JSON.stringify()

//Pass your array (or JSON object) into JSON.stringify: 
JSON.stringify([{id:1, product_id: 2, name: 'stack'}, 
       {id: 2, product_id: 2, name: 'overflow'}]) 

這將產生:

"[{"id":1,"product_id":2,"name":"stack"},{"id":2,"product_id":2,"name":"overflow"}]" 

可以存儲在一個隱藏字段與此值(或一個數據屬性):

<input type="hidden" id="project" value="[{'id':1,'product_id':2,'name':'stack"',{'id':2,'product_id':2,'name':'overflow'}]" /> 

很明顯,您可以結合這些步驟(或通過PHP/Rails的/ ...)

$('#project').val(JSON.stringify([1,2,3])); 

然後可以解碼此使用,例如jQuery的:

$.parseJSON($('#project').val()); 

這應該允許您使用您在使用過程中,但商店的Javascript對象你的輸入字段。希望這可以幫助!

+0

好吧,這似乎是相當不錯的,但我可以直接對數組對象進行字符串化或遍歷所有數組,並創建類似上面的語法stringify ...還有哪個庫,我必須包含在jsp頁面中用於JSON.Stringify ... – user882196

+0

JSON.stringify現在是JavaScript的一部分。你可以在本地使用它。有很多用於解析JSON的Javascript庫,jQuery有一個,但是其他的有很多。另外,你可以對數組進行字符串化處理,JSON會照顧到這一點。看看這個[JSFiddle](http://jsfiddle.net/ghayes/cVxKx/4/)的例子。 – ghayes

+0

我如何創建這種格式[{id:1,product_id:2,name:'stack'}, {id:2,product_id:2,name:'overflow'}]; – user882196

4

您可以

  1. 在存儲器中存儲的值,使用JS

    var arr = []; 
    arr.push(your_value); 
    
  2. 保持創造新的屬性/ DOM中使用JS
  3. 值從頁面通過傳遞值頁查詢字符串
  4. 將值存儲在cookie中以再次檢索
  5. 存儲在服務器上的值(在文件/數據庫)來檢索再次

注:
選項3和5只,如果你想要去到另一個頁面有意義的(上網站)。
如果您想在稍後關閉瀏覽器並檢索該信息,選項4和5是很好的選擇。

+0

好吧,我有興趣將值存儲在內存中.. – user882196

+0

告訴我更多關於存儲在內存中的信息.. – user882196

+0

沒有什麼可以告訴的,當你創建一個JavaScript數組時,它被存儲在內存中。只有在函數中創建它時,它纔會被銷燬,或者您轉到其他頁面。在這種情況下,您可能會將數組發送到服務器進行處理。 –

4

如果您不擔心IE7,你可以使用localStorage

window.localStorage.setItem('myArray', JSON.stringify([234,678,987])); 
// retrieve 
var myArray = JSON.parse(window.localStorage.getItem('myArray')); 

的JSON是現代瀏覽器的支持。您可以添加它,包括json2

+0

不知道他在服務器上使用的是什麼平臺/框架(如果有的話),這將是最好的選擇 –

1

我假設你正在討論在加載新頁面後保留數據。您可以使用當前的方法將數據作爲字符串存儲在隱藏輸入中,然後稍後將該字符串解析爲該字符串。另一種選擇是你的服務器端代碼可以產生一些內聯JavaScript聲明你需要的JavaScript對象。如果您使用ASP.NET,例如,你的頁面可能有這樣的事情:

// Assuming "serverSideIds" is declared as a List<string> 

<% var serializer = new JavaScriptSerializer(); %> 
var ids = <%= serializer.Serialize(serverSideIds) %>; 
相關問題