2017-02-13 4 views
-1
var parsed = JSON.parse($.cookie('inavm_inventory')); 

inventoryID = parsed['ids']; 
inventoryName = parsed['names']; 
inventoryCount = parsed['productcount']; 

私は3列の、その中に持っているクッキー「inavm_inventory」を持って、「IDS」、「名前」と「productcount」。パースクッキー。今、「プッシュ」機能ではない

上記の3つのローカル変数もあります。

現在、Cookieにすべて追加するとうまくいきますが、ユーザーがページを読み込むときにCookie配列をローカル変数にプッシュしようとしています。

上記のコードはすべて正常に動作しますが、上記のコードを使用すると、「配列」が破損します。私は値を記録しており、配列のように見えますが、文字列としてフォーマットされていると思います。

私は配列に.pushを再配列するようにそれらをフォーマットし直そうとしています。

クッキー例データ:

{ 
    "ids": "[\"quant[2]\",\"quant[3]\"]", 
    "names": "[\"2 3 Seater Sofa\",\"0 2 Seater Sofa\"]", 
    "productcount": "[8,0]" 
} 
+1

それはあなたが投稿のみコードを助けるために本当に難しいです。 ( 'parsed ['ids']'は 'parsed.ids'として書くこともできます。) – Pointy

+0

' parsed'を使う方法は配列のようには見えません。だから、 'parsed.push(...)'を呼び出すと驚くことではありませんし、うまくいきません(もしあなたがしているのであれば)。 –

+0

クッキーデータの例: {"ids": "[\" quant [2] \ "、\" quant [3] \ "]"、 "names": "\" 2 \\\ "3 Seater Sofa \ "0 2 Seater Sofa \"] "、" productcount ":" [8,0] "} – user3676945

答えて

0

あなたのクッキーは、3つのプロパティを持つオブジェクトが含まれています。これらのプロパティの値はすべて文字列であり、配列ではありません。

{ 
    "ids": ["quant[2]","quant[3]"], 
    "names": ["2 3 Seater Sofa","0 2 Seater Sofa"], 
    "productcount": [8,0] 
} 

ですから、クッキーの値を生成する何を見て、それが正しく、これらの3つの配列を出力して、それを修正したい:ここ

は、彼らが配列だった場合、それがどのように見えるかです。

これをJavaScriptで作成している場合は、上記のように正しく作成されます(1つのブロックとして機能しますが、これは1つのブロックとして機能しますが、おそらくそうではありません)。

そして、クッキーを作成
var obj = {}; 
obj.ids = ["quant[2]","quant[3]"]; 
obj.names = ["2 3 Seater Sofa","0 2 Seater Sofa"]; 
obj.productcount = [8,0]; 

あるいは

var obj = { 
    ids: [], 
    names: [], 
    productcount: [] 
}; 
obj.ids.push("quant[2]"); 
obj.names.push("2 3 Seater Sofa"); 
obj.productcount.push(8); 
obj.ids.push("quant[3]"); 
obj.names.push(["0 2 Seater Sofa"]); 
obj.productcount.push(0); 

$.cookie('inavm_inventory', JSON.stringify(obj))); 

あなたはしかし、完全に構造を変更し、オブジェクトの単一のアレイ使用を検討してください:あなたはそれを解析されたと思い一旦

[ 
    { 
     id: "quant[2]", 
     names: "2 3 Seater Sofa", 
     count: 8 
    }, 
    { 
     id: "quant[3]", 
     name: "0 2 Seater Sofa", 
     count: 0 
    } 
] 

を、あなたが使用したいオブジェクト:

console.log(parsed[0].id); // "quant[2]" 
console.log(parsed[0].name); // "2 3 Seater Sofa" 
console.log(parsed[0].count); // 8 

...(これはおそらくループ内にあります)。

だからここにあなたが起動したい:

var products = []; 

そして、そのアレイ上にフルアイテムをプッシュ:

products.push({id: "quant[2]", name: "2 3 Seater Sofa", count: 8}); 
+0

あなたのご意見ありがとうございます。クッキーは配列を許さないので、文字列です。私はこれを行うためにstringifyを使用する必要があることを述べておく必要があります。つまり、「配列」をクッキーに入れることができます: document.cookie = "inavm_inventory =" + JSON.stringify({ids:JSON.stringify(inventoryID)名前:JSON.stringify(inventoryName)、productcount:JSON.stringify(inventoryCount)}))+ "; max-age = 2592000;"; – user3676945

+0

@ user3676945:もちろん、クッキーは配列を許可しません。そのため私は上記の 'JSON.stringify'を使って示しています。あなたの元の構造と同じように、代わりの構造でも動作します。どちらの場合でも、格納するものはJSONです。これは文字列です。 –

+0

この記事で私が最初に解決策を見つけた場所: http://stackoverflow.com/questions/2980143/i-want-to-store-javascript-array-as-a-cookie 私はどちらですか? JSON.parseを使用してstringifyから配列を取り戻します...しかし、それは型配列ではないという私の現在の問題につながります。何とかそれらを配列に戻す必要があります。私は "inventoryID = [inventoryID]"を使って配列に変換しようとしましたが、あまりうまく動作しません。 – user3676945

関連する問題