我尝试将数组传递到脚本中。该脚本运行良好,并发送了所需的数据。问题是,错误:
未捕获的TypeError:无法读取未定义的属性'id'
<!-- Send the Item data for each item in the shopping cart -->
<script>
var orderId = <?php echo $orders['orders_id'];?>;
var products_array = <?php echo json_encode($products_array);?>;
skroutz_analytics('ecommerce', 'addItem', JSON.stringify({
order_id: orderId , // Order ID. Required.
product_id: products_array[0]['id'], // Product ID. Required.
name: products_array[0]['text'], // Product Name. Required.
price: products_array[0]['price'], // Price per Unit. Required.
quantity: products_array[0]['quantity'], // Quantity of Items. Required.
}));
</script>
产品数组的声明:
$products_array = array();
$products_query = tep_db_query("select products_id, products_name, products_price, products_quantity, products_tax from " .
TABLE_ORDERS_PRODUCTS . " where orders_id = '" .
(int)$orders['orders_id'] . "' order by products_name");
while ($products = tep_db_fetch_array($products_query)) {
$products_array[] = array('id' => $products['products_id'],
'text' => $products['products_name'],
'price' => $products['products_price'],
'quantity' => $products['products_quantity']);
}
答案 0 :(得分:0)
json_encode返回一个对象,而不是数组,所以可能您应该使用products_array->0->id
,而且无法读取属性是一个常见错误,您应该学习如何调试这些常见错误错误,在这种情况下,您可以使用products_array
检查console.log(products_array)
是什么,或者在php中使用$products_array
检查var_dump($products_array)
是什么
答案 1 :(得分:0)
在$products array
$ products数组长度中的问题,该长度不大于1或没有“ 0”索引。
您可以通过以下代码对其进行检查吗?
<script>
var orderId = <?php echo $orders['orders_id'];?>;
var products_array = <?php echo json_encode([$products_array]);?>;
skroutz_analytics('ecommerce', 'addItem', JSON.stringify({
order_id: orderId , // Order ID. Required.
product_id: products_array[0]['id'], // Product ID. Required.
name: products_array[0]['text'], // Product Name. Required.
price: products_array[0]['price'], // Price per Unit. Required.
quantity: products_array[0]['quantity'],// Quantity of Items. Required.
}));
</script>
我将$products_array
变量添加到了数组中
答案 2 :(得分:0)
json_encode($ products_array)将返回对象。 如果您将其更改为 json_encode($ products_array,true);它将返回一个数组