通过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;
}
我错过了一步吗?
答案 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对象视为键值对的哈希值,其中值可以包括键值对的另一个哈希值。