dan*_*007 20 javascript cookies jquery jquery-cookie
我有一个javascript对象列表:
var people = [
{ 'name' : 'Abel', 'age' : 1 },
{ 'name' : 'Bella', 'age' : 2 },
{ 'name' : 'Chad', 'age' : 3 },
]
Run Code Online (Sandbox Code Playgroud)
我尝试使用jQuery $ .cookie()将它们存储在浏览器cookie中:
$.cookie("people", people);
Run Code Online (Sandbox Code Playgroud)
然后,我检索此cookie,然后尝试将另一个对象推入其中:
var people = $.cookie("people");
people.push(
{ 'name' : 'Daniel', 'age' : 4 }
);
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用; 我在Firebug中分析了这段代码,并且控制台注意到它people是一个string("[object Object],[object Object],[object Object]")并且push函数不存在.
到底是怎么回事?存储和检索对象列表的正确方法是什么?
use*_*654 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));
Run Code Online (Sandbox Code Playgroud)
我今天尝试了这个,但无法让它发挥作用.后来我发现这是因为我有三个非常大的物体,我试图保存在一个饼干中.
我在这方面工作的方式是将信息存储在浏览器本地存储中.
例:
localStorage.setItem("test2", JSON.stringify(obj) )
localStorage.getItem("test2")
Run Code Online (Sandbox Code Playgroud)
有关本地存储的更多信息:cookies与本地存储
我4小时的时间发泄,不要犯同样的错误.