Uncaught TypeError:无法读取未定义的属性“ id”-将数组回显到脚本中时

时间:2018-11-29 14:49:00

标签: javascript php arrays

我尝试将数组传递到脚本中。该脚本运行良好,并发送了所需的数据。问题是,错误:

未捕获的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']);                                                  
}

3 个答案:

答案 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);它将返回一个数组