首页 > 解决方案 > 跟踪代码管理器脚本未在嵌套 JSON 中正确显示数组

问题描述

我看到其他主题/问题没有回答关于 GTM 脚本的罕见行为。

我想像这样推送数组:

[{id:value, price:value, quantity:value}] 

在跟踪代码管理器中制作的以下自定义 JS 中,在项目数组中:

<script type="text/javascript" src="CONFIDENTIAL" async="true"></script>
<script type="text/javascript">
window.CONFIDENTIAL= window.CONFIDENTIAL|| [];
window.CONFIDENTIAL.push(
{ event: "viewBasket", page_id: "viewBasket_mobile", item: [
{ id: "First item id", price: First item unit price, quantity: First item quantity },
{ id: "Second item id", price: Second item unit price, quantity: Second item quantity }
/* add a line for each item in the user's cart */
]});
</script>

我的自定义函数从主 dataLayer 获取并仅获取这 3 个键/值,工作正常:

function(){
  var products = {{DLV - ecommerce.checkout.products}};
  return products.reduce(
    function(arr,prod)
                         {
    return arr.concat({
      "id":prod.id,
      "quantity":prod.quantity,
      "price":prod.price
    });
  },[]
);
}

但是,当我在主脚本中调用变量时,例如:

{ event: "viewBasket",
   page_id: "viewBasket_{{CONFIDENTIAL - evaluateViewPageID}}",
   item: "{{new CONFIDENTIAL viewBasket}}"
 }

控制台和源代码中的结果不是预期的:

我的测试:

第一次尝试,我添加了 JSON.parse 或 JSON.stringify 或添加/删除双引号 " " 并在上面显示了第一个输出。

第二次尝试,我在函数内部使用了不同的组合,再次添加/删除双引号,并在上面显示了第二个输出

第三,我在函数内部使用了stringify,并在脚本中使用了双引号,我只看到了一个像字符串一样的JSON(二进制格式)。

我在浏览器的控制台中使用eval()函数检查了上面的第二个输出,是的,结果是正确的,Array expectedm 但不适用于脚本。

所以,在我的所有组合之后,我使用另一个函数来获取和创建一个新数组,但输出相同。任何解决方案,想法?

谢谢你的帮助先生

标签: google-tag-manager

解决方案


推荐阅读