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

时间:2011-08-16 23:10:49

标签: javascript

我的情况如下:

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

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

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

4 个答案:

答案 0 :(得分: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'}] )

将产生:

 "[{"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对象。希望这有帮助!

答案 1 :(得分:4)

你可以

  1. 使用JS

    将值存储在内存中
    var arr = [];
    arr.push(your_value);
    
  2. 使用JS
  3. 继续在dom中创建新的属性/值
  4. 通过查询字符串
  5. 将值从一页传递到另一页
  6. 将值存储在要再次检索的cookie中
  7. 将值存储在服务器上(在文件/ db中)以再次检索

  8. 注意:
    选项3和5仅在您想要转到另一页(在网站上)时才有意义 如果您想关闭浏览器并在以后检索该信息,则选项4和5都很好。

答案 2 :(得分:4)

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

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

现代浏览器支持JSON。您可以通过添加json2来添加它。

答案 3 :(得分:1)

我假设您正在讨论在加载新页面后保留数据。您可以使用当前的方法将数据作为字符串存储在隐藏的输入中,然后将该字符串解析为JavaScript对象。另一个选择是您的服务器端代码可以生成一些内联JavaScript,声明您需要的JavaScript对象。例如,如果您使用的是ASP.NET,那么您的页面可能会包含以下内容:

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

<% var serializer = new JavaScriptSerializer(); %>
var ids = <%= serializer.Serialize(serverSideIds) %>;