2012-03-29 8 views
4

私は友人と一緒にオンラインショップで働いています。彼はカートに追加された商品の量でPHPで私のためのクッキーを設定しました。クッキーは「カート」と呼ばれ、その量の変数は「アイテム」と呼ばれます。javascript/jqueryでCookieをエンコードする方法は?

そして、私はクッキーを読んで、「カート」の値をjavascriptで元に戻し、HTML文書で印刷する必要がありますが、アイデアはありません。どうすればいいですか?以前はクッキーやJSONを使ったことはありませんでしたが、JSONを使って行うべきだと思います。

私は:console.log(document.cookie);

が、私はこのような何か受け取る:cart=%7B%22items%22%3A%7B%228%22%3A1%7D%7D;

をそして、私はそれをどのように符号化するか見当がつかない。

は、あなたがしたいJSON文字列である {"items":{"8":1}}のURLエンコードされた同等である

+0

を? – Bergi

+0

私は思うjson_decode() – ms2

+0

それはちょうどURLエンコードされています。 –

答えて

8

ありがとうございます。

あなたがしなければならないのは、それをデコードし、JSONを解析している。次にログインするカートは、あなたの必要に応じてあなたがアクセスできる「アイテム」プロパティを持つオブジェクトを与える必要があります

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

EDIT:

例として、ここでアイテムを反復し、アイテムの合計数とすべての数量の合計を決定するための方法です。

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

+0

この時点でオブジェクト 'items'を持つ' cart'オブジェクトがあります。 itemsオブジェクトには値が '1'(項目ID 8、量は1? - 私はここで推測しています)の値を持つ '8'という名前のプロパティがあります。 これは 'cart.items [" 8 "]'でアクセスできますが、表示する内容を決定するためにそのアイテムオブジェクトを操作したいと思うでしょう。それを繰り返すことで、そこにあるアイテムの数を調べたり、各アイテムの数やその他の数を調べることができます。 – kiswa

+0

よかった、ありがとう。 – ms2

0

あなたはそれをデコードする必要があるように見え、あなたが実行可能なオブジェクトを取得し、それをevalし/解析することになるでしょう:クッキーはPHPでエンコードされた方法

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