2016-03-07 65 views
0

如何在JavaScript Cookie中存储对象/数组? 我想,简单的代码将对象/数组存储在jQuery Cookie中

var item = { 
    price: 200, 
    company: 'Microsoft', 
    quantity: 500, 
    code: 'm33' 
} 

console.log(item); 
Cookies.set('item', item); 
console.log(Cookies.get('item')); 

它示出了第一控制台消息的所有值,但是仅给出了“[对象的对象]”中的第二个。看起来像js-cookie无法正确处理对象。有什么方法可以解决这个问题吗?

+0

可以[de]序列化它。 'Cookie.set('item',JSON.stringify(item))'/'JSON.parse(Cookie.get('item'))' –

回答

1

您正在存储一个对象,并且cookie仅允许文本。请记住,Cookie的最大长度为4 KB,因此您无法在此处存储大量信息(请改用localStorage)。

为了解决这个问题,必须首先将字符串化JSON:

Cookies.set('item', JSON.stringify(item)); 

你会存储一个字符串化的对象。要访问它,您必须解析字符串:

console.log(JSON.parse(Cookie.get('item'))); 
+0

谢谢你的解决方案。我一直在寻找它的最后8个小时。 – Anirudh

-1

在cookie中,您只能存储字符串。所以为了首先存储对象,你需要将你的对象转换为字符串。使用this plugin这里有一个例子:

var people = [ 
    {"id": 123, "name": "Mazahir Eyvazli"}, 
    {"id": 128, "name": "Mayki Nayki"}, 
    {"id": 131, "name": "Mike Shinoda"} 
]; 
$.cookie("people", JSON.stringify(people)); 

如果您要访问您的为对象,从饼干

// $.cookie("people") will return people object as an string 
// therefore we parse it to JSON object 
var people = $.parseJSON($.cookie("people")); 
// now we can access our object 
people[0]["id"] // --> 123 
people[1]["name"] // --> Mayki Nayki 
+0

OP已经在使用cookie库。切换到另一个不会有任何区别 – charlietfl

相关问题