Javascript错误“;无法读取属性";

Javascript错误“;无法读取属性";,javascript,jquery,google-analytics,Javascript,Jquery,Google Analytics,我正在尝试将产品名称和价格动态添加到产品中。 代码如下: var dataLayer =[{ 'ecommerce': { 'purchase': { 'actionField': { 'id': 'T12345', 'affiliation': 'Online Store', 'revenue': '35.43', 'tax':'4.90', 'shipping': '5.99',

我正在尝试将产品名称和价格动态添加到产品中。 代码如下:

  var dataLayer =[{
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',
        'affiliation': 'Online Store',
        'revenue': '35.43',
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      }
    }
  }
}];
但我得到一个错误“uncaughtypeerror:无法读取未定义的属性‘购买’”。 我希望数据层如下所示:

$('.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
        }); 
    });
});

任何帮助都可以接受。谢谢。

您的
数据层
是一个数组,因此尝试访问数组的属性
电子商务
会返回
未定义的
。访问未定义的购买会引发异常

改用
数据层[0]。电子商务
,或将数据层更改为如下对象:

 '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',
       }]
    }
  }
进一步,您的
数据层.ecommerce.purchase.products.push
正在purchace内部访问
产品
,但我在您的数据层中没有看到任何产品

将属性
产品
添加到
数据层
对象

 var dataLayer ={
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',
        'affiliation': 'Online Store',
        'revenue': '35.43',
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      }
    }
  }
};

您的
dataLayer
是一个数组,因此尝试访问数组的属性
ecommerce
会返回
undefined
。访问未定义的购买会引发异常

改用
数据层[0]。电子商务
,或将数据层更改为如下对象:

 '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',
       }]
    }
  }
进一步,您的
数据层.ecommerce.purchase.products.push
正在purchace内部访问
产品
,但我在您的数据层中没有看到任何产品

将属性
产品
添加到
数据层
对象

 var dataLayer ={
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',
        'affiliation': 'Online Store',
        'revenue': '35.43',
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      }
    }
  }
};

有两个问题,第一个数据层是一个数组,所以您必须访问数据层的第一个元素。另一个是您必须在购买中创建产品属性

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
    }
  }
};


上述两种方法中的任何一种都必须起作用。有两个问题,第一个是数据层,因此您必须访问数据层的第一个元素。另一个是您必须在购买中创建产品属性

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
    }
  }
};


以上两项中的任何一项必须起作用

表示数据层。电子商务未定义。如果你看它,数据层是一个数组…试试数据层[0]。电子商务。采购。产品。推送
dataLayer
是一个数组,在
purchase
对象中没有
products
属性,所以你必须先添加它,这意味着
数据层。电子商务
是未定义的。如果你看一看,数据层是一个数组…试试数据层[0]。电子商务。采购。产品。推送
dataLayer
是一个数组,在
purchase
对象中没有
products
属性,所以你必须先添加它