2012-03-29 49 views
4

我正在和我的朋友一起在网上商店工作。他使用PHP为我设置了一个cookie,并在购物车中添加了大量产品。该cookie被称为“购物车”,而具有产品数量的变量被称为“物品”。如何使用javascript/jquery编码cookie?

而且我必须读取cookie并将“cart”的值返回给javascript并将其打印在HTML文档中,但我不知道如何使用它,请问您能帮我吗?我以前从来没有使用过Cookie或JSON,但我认为应该使用JSON来完成,请问我能向您解释它是如何工作的?

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

我收到这样的事情:cart=%7B%22items%22%3A%7B%228%22%3A1%7D%7D;

而且我不知道如何编码。

谢谢

+0

是如何饼干在PHP编码? – Bergi 2012-03-29 15:16:47

+0

我认为json_decode() – ms2 2012-03-29 15:23:22

+0

这只是URL编码。 – 2012-03-29 15:24:19

回答

8

这是{"items":{"8":1}}的URL编码相当于这是你想要的JSON字符串。

所有你需要做的是对其进行解码并解析JSON:

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

然后登录购物车应该给你一个“项目”属性根据需要,你可以访问的对象。

编辑:

作为一个例子,这里通过的项目进行迭代,并确定项目的总数量和总的所有数量的一种方式。

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); 
+0

我应该如何实现它?我怎样才能将这个值保存在一个变量中? – ms2 2012-03-29 17:00:32

+0

在这一点上,你有一个对象'购物车',其中有一个对象'物品'。 items对象有一个名为'8'的属性,其值为'1'(项目ID为8,数量为1? - 我在这里猜测)。 您可以通过'cart.items [“8”]'来访问它,但您可能需要通过该项目对象来确定要显示的内容。您可以遍历它并找出有多少物品,或找出每件物品的数量或其他数量。 – kiswa 2012-03-29 17:19:02

+0

太好了,谢谢。 – ms2 2012-03-30 07:29:35

0

看起来像你只需要对其进行解码,那么你将要解析/ EVAL它得到一个可行的目标:

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