var dataLayer =[{
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345',
'affiliation': 'Online Store',
'revenue': '35.43',
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
}
}
}
}];
我正在尝试动态地将产品名称和价格添加到产品中。 这是代码:
$('.to-buy').click(function() {
$('.sed').each(function() {
var product_name = $(this).find('h5').text();
var product_price = $(this).parent().siblings(".cost").text();
dataLayer.ecommerce.purchase.products.push({
"name" : product_name ,
"price" :product_price
});
});
});
但我收到错误“Uncaught TypeError:无法读取未定义的属性'购买'”。 我期待datalayer如下:
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345',
'affiliation': 'Online Store',
'revenue': '35.43',
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
},
'products': [{
'name': 'Triblend Android T-Shirt',
'price': '15.25'
},
{
'name': 'Donut Friday Scented T-Shirt',
'price': '33.75',
}]
}
}
接受任何帮助。谢谢。
答案 0 :(得分:2)
您的dataLayer
是一个数组,因此尝试访问数组的属性ecommerce
会返回undefined
。访问undefined的购买会引发异常。
改为使用dataLayer[0].ecommerce
,或将dataLayer更改为如下对象:
var dataLayer ={
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345',
'affiliation': 'Online Store',
'revenue': '35.43',
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
}
}
}
};
此外,您dataLayer.ecommerce.purchase.products.push
正在访问products
内部购买但我在您的dataLayer中看不到任何产品。
将属性products
添加到dataLayer
对象
var dataLayer ={
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345',
'affiliation': 'Online Store',
'revenue': '35.43',
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
},
products:[] // Your are missing this
}
}
};
答案 1 :(得分:1)
有两个问题,第一个 dataLayer 是一个数组,因此您必须访问数据层的第一个元素。另一个是您必须在购买
中创建产品属性dataLayer[0].ecommerce.purchase.products =[{
"name":product_name ,
"price" :product_price
}];
OR
dataLayer[0].ecommerce.purchase.products =[];
dataLayer[0].ecommerce.purchase.products.push({
"name":product_name ,
"price" :product_price
});
上述两个中的任何一个都必须工作