通过onclick事件传递json编码的多维数组到javascript
Passing json encoded MultiDimensional Array to javascript via onclick event
通过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对象视为键值对的哈希,其中值可以是任何值,包括键值对的另一个哈希。
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript