google-tag-manager - 跟踪代码管理器脚本未在嵌套 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}}"
}
控制台和源代码中的结果不是预期的:
- [[对象对象]]
- google_tag_manager.macro[44]
- "[{"id":"89766","price":"2.63","quantity":"3"}]"
我的测试:
第一次尝试,我添加了 JSON.parse 或 JSON.stringify 或添加/删除双引号 " " 并在上面显示了第一个输出。
第二次尝试,我在函数内部使用了不同的组合,再次添加/删除双引号,并在上面显示了第二个输出
第三,我在函数内部使用了stringify,并在脚本中使用了双引号,我只看到了一个像字符串一样的JSON(二进制格式)。
我在浏览器的控制台中使用eval()函数检查了上面的第二个输出,是的,结果是正确的,Array expectedm 但不适用于脚本。
所以,在我的所有组合之后,我使用另一个函数来获取和创建一个新数组,但输出相同。任何解决方案,想法?
谢谢你的帮助先生
解决方案
推荐阅读
- c# - 如何在 MSBuild 参数命令行上添加任务
- mysql - MySQL 在不同的计算机上使用不同的内存
- python - 删除了 Python 2.7.15 并安装了 3.7.1,但 Spyder 仍然是 python 2.7.15
- javascript - JavaScript 图像打印显示空白
- javascript - Dialogflow 使用 express 检测音频不起作用
- typescript - 打字稿数组与编号索引和自定义属性通过字符串键访问
- java - 带有内部映射(3 个值)的映射(哈希映射)
- openapi - HTTP 状态码必须是字符串吗?
- php - 使用PHP将生成的excel文件保存到服务器
- java - 重新启动应用程序时保存布尔状态