2016-10-26 4 views
1

私は昨日からプッシュメソッドで配列を渡すことを試みてきました。JSの配列を追跡コードプッシュメソッドで追加する

Criteoと呼ばれるトラッキングコードがあり、動作させるには以下の情報を入力する必要があります。 viewBasketを除くすべてが問題ありません。

<script type="text/javascript"> 
    window.criteo_q = window.criteo_q || []; 
    window.criteo_q.push(
    { event: "setAccount", account: 11111 }, 
    { event: "setEmail", email: "[email protected]" }, 
    { event: "setSiteType", type: "d" }, 
    { event: "viewBasket", item: [ 
    { id: "product_id_1", price: price_1, quantity: quantity_1 }, 
    { id: "product_id_2", price: price_2, quantity: quantity_2 } 
    /* add a line for each item in the user's basket */ 
    ]} 
); 
</script> 

だから、アレイを作成し、データクリテオとそれを移入は、(製品ID、価格及び数量である)を必要とします。コンソールで正しい構造を見ることはできましたが、コードに渡すとうまくいきません。私はこれを参照することができるコンソールで

(最初の部分は、私は、アレイ内に押し込ま二行であり、2つ目は、全配列である):正確

{ id:"20020-278", price: 119, quantity: 1}, 
{ id:"20009-129", price: 927, quantity: 3}, 

Array[2] 
0: "{ id:"20020-278", price: 119, quantity: 1}," 
1: "{ id:"20009-129", price: 927, quantity: 3}," 
length: 2__proto__: Array[0] 

私はそれを必要としてではなく、何らかの理由でそれがありませんうまくいかない。私はそれをJSON配列に変換しようとしましたが、変数を持たない通常の行を渡すだけでしたが、私はまだこの問題を抱えています。

enter image description here

:私はまた、私はクリテオコードの 'allitems' 配列クリテオデバッグページ

<script type="text/javascript"> 
    window.criteo_q = window.criteo_q || []; 
    window.criteo_q.push(
    { event: "setAccount", account: 11111 }, 
    { event: "setEmail", email: "[email protected]" }, 
    { event: "setSiteType", type: "d" }, 
    { event: "viewBasket", item: [ 
     allitems 
    ]} 
); 
</script> 

がこのように表示されるパスそのシンボルに{ ..

<script type="text/javascript"> 
    ... 
    ... 
    var full_line = "\{ id:\""+pid+"\", price: "+price+", quantity: "+quantity+"\},"; 
    //var full_line = "\{ id:20020-278, price:119, quantity:1\},"; 
    //var full_lineJson = JSON.stringify(full_line); 

    console.log(full_line); 
    allitems.push(full_line); 
</script> 

をエスケープ

結果は次のとおりです。

Product ID Price Quantity 
20010-278  69  1 

しかし、あなたは構造が何とか壊れているのを見ることができます。私は非常に多くの方法を試しましたが、それでもこれを修正することはできませんでした。配列の構造に何か問題がありますが、他に何ができるのか分かりません。何か提案してください? プロダクトID情報が欠落している:

編集:私はオブジェクトを渡すと、私はオブジェクトを使用する場合

Object {product_id: "20020-278", price: "119", quantity: "1"} 
Object {product_id: "20009-129", price: "927", quantity: "3"} 

Array[2] 
0: Object 
price: "119" 
product_id: "20020-278" 
quantity: "1" 

__proto__: Object 

1: Object 
price: "927" 
product_id: "20009-129" 
quantity: "3" 

__proto__: Object 

length: 2__proto__: Array[0] 

クリテオサイトでは、このエラーを表示する「項目」プロパティが欠落しているコードは、私が使用

オブジェクト:

<script type="text/javascript"> 
    ... 
    var full_line = {}; 
     full_line.product_id = product_id; 
     full_line.price = price; 
     full_line.quantity = quantity; 
    allitems.push(full_line); 
    ... 
</script> 

次に、アイテムプロパティのCriteo "viewBasket"内のallitemsを使用しました。

+2

これはコンソールに出力された場合: '0: "{ID:" 20020から278" 、価格:119、数量:1}、" '、あなたが推進している文字列が、オブジェクトではない – Rajesh

+0

オブジェクトをプッシュする必要はありますか?私はCriteoの構造を100%フォローしたかったのです。これは(すべての記号を含む):{id: "product_id_1"、price:price_1、quantity:quantity_1}、 – giancy9

+0

Criteo **は**オブジェクトを使用しています。 – Weedoze

答えて

0

var firstLine = { 
 
    product_id: "20020-278", 
 
    price: "119", 
 
    quantity: "1" 
 
}; 
 
var secondLine = { 
 
    product_id: "20009-129", 
 
    price: "927", 
 
    quantity: "3" 
 
}; 
 

 
var items = []; 
 
items.push(firstLine); 
 
items.push(secondLine); 
 

 
var myObj = { 
 
    event: "viewBasket", 
 
    item: items 
 
}; 
 

 
console.log(myObj); 
 

 
//window.criteo_q = window.criteo_q || []; 
 
//window.criteo_q.push({ 
 
// event: "setAccount", 
 
// account: 11111 
 
//}, { 
 
// event: "setEmail", 
 
// email: "[email protected]" 
 
//}, { 
 
// event: "setSiteType", 
 
// type: "d" 
 
//}, myObj);

+0

こんにちは、ありがとうございました。 – giancy9

+0

私は試しましたが、同じエラー "製品ID情報がありません:"アイテム "プロパティがありません"が表示されます。多分それは再びオブジェクト構造と関係がありますか?あなたが示唆したようにコードを変更しましたが、まだ動作していません – giancy9

+0

最終的なオブジェクトを表示してください – Weedoze