问题描述
当我加载电子商务收据页面时,我试图对分析数据层进行两次推送。
我的问题是我只能参加两个事件之一。
<script>
function trackEcommerce() {
dataLayer.push({
'event': 'checkout','ecommerce': {
'checkout': {
'actionField': { 'step': 2 }
}
}
});
}
dataLayer.push({
'event' : 'purchaseEvent','ecommerce': {
'purchase': {
'actionField': {
'id': '@orderId','affiliation': 'Eldorado','revenue': '@OrderTotal.ToString("F",System.Globalization.CultureInfo.GetCultureInfo("en-GB"))','tax':'@VatTotal.ToString("F",'shipping': '@ShippingFee.ToString("F",System.Globalization.CultureInfo.GetCultureInfo("en-GB"))'
},'products': [
@foreach (var item in GetLoop("OrderLines"))
{
string productName = item.GetString("Ecom:Product.Name").Replace("\"","").Trim();
string productNumber = item.GetString("Ecom:Product.Number");
double orderLineUnitPrice = item.GetDouble("Ecom:Order:OrderLine.UnitPrice.PriceWithoutVAT.Value");
int orderLineQuantity = item.GetInteger("Ecom:Order:OrderLine.Quantity");
string brand = item.GetString("Ecom:Product:Field.Brands.Value");
var DwProduct = ProductService.GetProductById(item.GetString("Ecom:Order:OrderLine.ProductID"),item.GetString("Ecom:Order:OrderLine.ProductvariantID"),item.GetString("Ecom:Product.LanguageID"));
string category = DwProduct.DefaultGroup == null ? "" : DwProduct.DefaultGroup.Name;
<text>{
'name': '@productName','id': '@productNumber','price': '@orderLineUnitPrice.ToString("F",'brand': '@brand','category': '@category','quantity': @orderLineQuantity
},</text>
}
]
}
},'eventCallback': trackEcommerce()
});
</script>
我尝试过以各种不同的方式格式化此代码。我已经使回调函数直接像下面那样调用第二个dataLayer push:
'eventCallback': function () {
dataLayer.push({
'event': 'checkout','ecommerce': {
}
});
}
我还尝试仅连续输出两个dataLayer推送,而两次推送之间没有eventCallback或其他关系。
解决方法
最明显的是,您正在使用函数调用trackEcommerce()
而不是引用类似'eventCallback': trackEcommerce
的函数
但是,仅使用两次简单的后续推送就可以正常工作,并且更易于调试。
dataLayer.push({ 'event': 'checkout',... });
// ...
dataLayer.push({ 'event': 'purchaseEvent',... })