通过onclick事件将json编码的MultiDimensional Array传递给javascript

时间:2014-07-18 20:24:19

标签: javascript php json multidimensional-array

通过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"
}

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

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

我错过了一步吗?

2 个答案:

答案 0 :(得分:2)

问题是PHP Arrays!= JavaScript Arrays。

在PHP中,数组可以包含非数字索引(也称为哈希表或关联数组)。在JavaScript中,数组是那些具有数字索引的数组。其他一切都是一个对象。上面的JSON代表javascript中的一个对象。

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

答案 1 :(得分:1)

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

console.log(data.products)

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