如何用javascript / jquery编码cookie?

时间:2012-03-29 15:12:02

标签: javascript jquery html json cookies

我和朋友一起在网上开店。他用PHP为我设置了一个cookie,其中包含了添加到购物车中的产品数量。 cookie被称为“cart”,带有产品数量的变量称为“items”。

我必须阅读cookie并使用javascript获取“cart”的值并将其打印在HTML文档中,但我不知道如何使用它,你能帮助我吗?我以前从未使用过cookie或JSON,但我认为它应该用JSON完成,你能解释一下它是如何工作的吗?

当我这样做时:console.log(document.cookie);

我收到的内容如下:cart=%7B%22items%22%3A%7B%228%22%3A1%7D%7D;

我不知道如何编码。

谢谢

2 个答案:

答案 0 :(得分:9)

这是与{"items":{"8":1}}等效的URL编码,它是您想要的JSON字符串。

您所要做的就是解码它并解析JSON:

var cart = JSON.parse(decodeURIComponent(document.cookie.cart));

然后记录购物车应该为您提供一个具有'items'属性的对象,您可以根据需要访问该属性。

编辑:

例如,这是一种迭代项目并确定项目总数和所有数量总和的方法。

var items_total = 0,
    quantity_total = 0;
for (var prop in cart.items) {
    items_total += 1;
    quantity_total += cart.items[prop];
}

console.log("Total Items: " + items_total);
console.log("Total Quantities: " + quantity_total);

答案 1 :(得分:0)

看起来您只需解码它,然后您将需要解析/评估它以获得可用的对象:

var obj, decoded = decodeURIComponent(document.cookie.cart);
if(window.JSON && JSON.parse){
  obj = JSON.parse(decoded);
} else {
  eval('obj = ' + decoded);
}
// obj == {"items":{"8":1}};