【问题标题】:How do I store an array of objects in a cookie with jQuery $.cookie()?如何使用 jQuery $.cookie() 在 cookie 中存储对象数组?
【发布时间】:2012-02-20 20:16:09
【问题描述】:

我有一个 javascript 对象列表:

var people = [
   { 'name' : 'Abel', 'age' : 1 },
   { 'name' : 'Bella', 'age' : 2 },
   { 'name' : 'Chad', 'age' : 3 },
]

我尝试使用 jQuery $.cookie() 将它们存储在浏览器 cookie 中:

$.cookie("people", people);

然后我检索这个 cookie,然后尝试将另一个对象推入其中:

var people = $.cookie("people");
people.push(
    { 'name' : 'Daniel', 'age' : 4 }
);

但是,这不起作用;我在Firebug中分析了这段代码,Console注意到people是一个字符串("[object Object],[object Object],[object Object]"),并且push函数不存在。

发生了什么事?存储和检索对象列表的正确方法是什么?

【问题讨论】:

  • 你应该把people的变量名改成babies :)
  • $.cookie("people", $.param(people));这对我来说非常有效

标签: javascript jquery cookies jquery-cookie


【解决方案1】:

Cookie 只能存储字符串。因此,您需要将对象数组转换为 JSON 字符串。如果你有 JSON 库,你可以简单地使用 JSON.stringify(people) 并将其存储在 cookie 中,然后使用 $.parseJSON(people) 取消字符串化。

最后,您的代码将如下所示:

var people = [
   { 'name' : 'Abel', 'age' : 1 },
   { 'name' : 'Bella', 'age' : 2 },
   { 'name' : 'Chad', 'age' : 3 },
];
$.cookie("people", JSON.stringify(people));
// later on...
var people = $.parseJSON($.cookie("people"));
people.push(
    { 'name' : 'Daniel', 'age' : 4 }
);
$.cookie("people", JSON.stringify(people));

【讨论】:

  • 谢谢,什么是JSON库?
  • 发现这很有帮助,但是这个 var people = $.parseJSON($.cookie("people");) 应该是这个 var people = $.parseJSON($.cookie("people")) ; “;”不合适。
  • @ARWVISIONS 更好?在移动设备上很难说。
【解决方案2】:

我今天尝试了这个,但无法让它工作。后来我发现这是因为我有 3 个非常大的对象,我试图将它们保存在 cookie 中。

我解决这个问题的方法是将信息存储在浏览器的本地存储中。

示例:

localStorage.setItem("test2", JSON.stringify(obj) )

localStorage.getItem("test2")

关于本地存储的更多信息:cookies vs local storage

我花了 4 小时的时间发泄在这件事上,不要犯同样的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 2010-12-29
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多