我怎么能以某种方式存储javascript数组对象,以便我以后可以使用它

use*_*196 13 javascript

我有如下情况:

我有一个id选择页面,用户可以从页面上显示的ID中选择id.当用户选择id时,我将它们存储为隐藏输入字段中的逗号分隔值.

      <input type="hidden" values="234,678,987" />
Run Code Online (Sandbox Code Playgroud)

我有一个按钮,在单击时会弹出一个对话框,然后显示所选的ID.这里显示的ID来自隐藏字段.现在我需要存储产品ID和名称.所以在这种情况下我应该怎么做因为现在我无法在隐藏的输入字段中保存这个数据结构.即使我使用javascript数组,如何保存该数组并将其用于将来进行显示.是否可以将数组对象保存在隐藏的输入字段中....并稍后将其作为数组对象检索...?

gha*_*yes 28

这是一个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'}] )
Run Code Online (Sandbox Code Playgroud)

这将产生:

 "[{"id":1,"product_id":2,"name":"stack"},{"id":2,"product_id":2,"name":"overflow"}]"
Run Code Online (Sandbox Code Playgroud)

您可以将此值存储在隐藏字段(或数据属性)中:

 <input type="hidden" id="project" value="[{'id':1,'product_id':2,'name':'stack"',{'id':2,'product_id':2,'name':'overflow'}]" />
Run Code Online (Sandbox Code Playgroud)

显然,你可以结合这些步骤(或通过PHP/Rails/...)

 $('#project').val(JSON.stringify([1,2,3]));
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用例如jQuery对此进行解码:

 $.parseJSON($('#project').val());
Run Code Online (Sandbox Code Playgroud)

这应该允许您使用您正在使用的过程,但在输入字段中存储Javascript对象.希望这可以帮助!