首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用jQuery $.cookie()将对象数组存储在cookie中?

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

Stack Overflow用户
提问于 2012-01-28 05:09:43
回答 2查看 35.1K关注 0票数 22

我有一个javascript对象列表:

代码语言:javascript
复制
var people = [
   { 'name' : 'Abel', 'age' : 1 },
   { 'name' : 'Bella', 'age' : 2 },
   { 'name' : 'Chad', 'age' : 3 },
]

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

代码语言:javascript
复制
$.cookie("people", people);

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

代码语言:javascript
复制
var people = $.cookie("people");
people.push(
    { 'name' : 'Daniel', 'age' : 4 }
);

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

怎么一回事?存储和检索对象列表的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-28 05:12:45

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

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

代码语言:javascript
复制
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));
票数 34
EN

Stack Overflow用户

发布于 2015-08-20 22:48:31

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

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

示例:

代码语言:javascript
复制
localStorage.setItem("test2", JSON.stringify(obj) )

localStorage.getItem("test2")

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

我花了4个小时来发泄,不要再犯同样的错误了。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9040110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档