我试图将json对象存储在cookie中,但我遇到了一些问题。 我可以像这样创建我的对象:
product = {
"name" : "prodname",
"quantity" : 4
}
然后我将此对象保存在我的cookie中。随着更多产品的添加(它是购物篮),我通过在cookie字符串的末尾附加新对象来添加更多字符串(所以我基本上有很多小的单独对象)。我很难将对象从cookie字符串中取出。当我尝试从cookie中读取对象时,$.parseJSON
和eval
都会失败。任何帮助将不胜感激。
答案 0 :(得分:9)
应该是这样的:
{"products": [
{
"name" : "prodname",
"quantity" : 4
},
{
"name" : "prodname2",
"quantity" : 3
}
]}
[]
表示数组。如果要添加其他产品,请从cookie加载,更新阵列,然后再次保存。如果你愿意,你可以跳过外部对象,让cookie只是数组。
编辑:说cookieStr
是你的cookie。
var root = $.parseJSON(cookieStr);
root.products.push(newProduct);
cookieStr = JSON.stringify(root);
答案 1 :(得分:6)
将从JSON.stringify(cookieStr)返回的值保存到cookie不是一个好习惯。它可能导致某些浏览器出现错误。
在使用之前你应该将它转换为base64(使用btoa),并在阅读时,从base64转换(使用atob)
val = JSON.stringify(cookieStr)
val = btoa(val)
write_cookie(val)