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

2021/01/31 00:51 · jquery ·  · 0评论

我有一个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函数不存在。

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

Cookies只能存储字符串。因此,您需要将对象数组转换为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));

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

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

例:

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

localStorage.getItem("test2")

有关本地存储的更多信息:Cookie与本地存储

我4小时的时间为此着迷,不要犯同样的错误。

本文地址:http://jquery.askforanswer.com/ruheshiyongjquery-cookiezaicookiezhongcunchuduixiangshuzu.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!