如何使用jQuery $ .cookie()在cookie中存储对象数组?

时间:2012-01-27 21:09:43

标签: javascript jquery cookies jquery-cookie

我有一个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中分析了这段代码,并且控制台注意到people是一个字符串("[object Object],[object Object],[object Object]")并且推送功能不存在。

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

2 个答案:

答案 0 :(得分:33)

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));

答案 1 :(得分:7)

我今天尝试了这个并且无法让它发挥作用。后来我发现这是因为我有三个非常大的物体,我试图保存在一个饼干中。

我的工作方式是将信息存储在浏览器的本地存储中。

示例:

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

localStorage.getItem("test2")

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

我4小时的发泄时间,不要犯同样的错误。