通过onclick事件传递json编码的多维数组到javascript

Passing json encoded MultiDimensional Array to javascript via onclick event

本文关键字:数组 javascript 编码 事件 onclick json 通过      更新时间:2023-09-26

通过onClick事件将多维数组传递给javascript,子数组被只读为object

这是json_encode d数组:

{
    "products": {
        "41::": {
            "key": "41::",
            "product_id": "41",
            "name": "iMac",
            "model": "Product 14",
            "shipping": "1",
            "image": "data/demo/imac_1.jpg",
            "option": [],
            "download": [],
            "quantity": 3,
            "minimum": "1",
            "subtract": "1",
            "stock": true,
            "price": 100,
            "total": 300,
            "reward": 0,
            "points": 0,
            "tax_class_id": "9",
            "weight": 15,
            "weight_class_id": "1",
            "length": "0.00000000",
            "width": "0.00000000",
            "height": "0.00000000",
            "length_class_id": "1"
        }
    },
    "token": "17263a44810f21b88362f908d2c4be02",
    "customer_id": "1"
}

json_decode d在php中返回完美,但在javascript中通过console.log(data):

{products: Object, token: "17263a44810f21b88362f908d2c4be02", customer_id: "1"}
php:

`<a id="button-checkout" class="button" onclick='checkOut(<?php echo $json; ?>)'>
        <span>Process Cart to Order</span></a>`
javascript:

function checkOut(data) {
    console.log(data);
    return false;
}

我错过了一个步骤吗?

问题是PHP数组= JavaScript数组。

在PHP中,数组可以有非数字的索引(也就是哈希表或关联数组)。在JavaScript中,只有数组具有数字索引。其他的都是对象。上面的JSON在javascript中表示一个对象。

再次检查控制台日志。我知道在chrome中你可以扩展对象键,我敢打赌你会发现你所有的数据都在那里。

这完全在意料之中。您正在记录包含三个属性的数据对象。第一个属性名为products,其类型为Object;第二个属性名为token,其类型为string,输出;最后一个属性为customer_id,其值为1。如果你要打电话:

console.log(data.products)

您将获得products对象的属性日志。您可以对每个对象的每个属性执行此操作,以记录它们的值。您可以将JavaScript对象视为键值对的哈希,其中值可以是任何值,包括键值对的另一个哈希。