我有以下通过PHP传递的json数组。 PHP数组是-
<?php
$arrTestData = [
1 => [
'id' => '1',
'name' => 'Written'
],
2 => [
'id' => '2',
'name' => 'Verbal'
]
];
$arrVariable = json_encode( $arrTestData );?>
我正在尝试像这样在javascript中迭代php数组-
<script>
$(document).ready(function () {
var response = '<?php echo $arrVariable; ?>';
data = $.parseJSON(response);
$.each(data,function(key,value) {
console.log(data.key + " --- " +data.value);
});
</script>
如果我打印数据控制台,它会显示给我,但无法在循环中使用。 但是在控制台中,它提供了未定义的功能。我想要数组中的值。
答案 0 :(得分:0)
响应对象是一个数组,被放入名为data
的变量中。在$.each
函数中,您尝试访问数组中的.key
和.value
项目。但是数组没有这些值。
您应该要做的是使用独立变量名 .each
回调的参数-即key
和{ {1}}。它们不是value
的 properties ,而是独立变量:
data
请注意,由于这些值是 objects ,因此将导致
$.each(data,function(key,value) {
console.log(key + " --- " + value);
});
如果还要迭代内部对象的键和值,请使用1 --- [object Object]
2 --- [object Object]
:
Object.entries
输出:
$.each(data,function(key,value) {
Object.entries(value).forEach(([key, val]) => {
console.log(key + ' --- ' + val);
});
});
还请注意,不需要像jQuery这样的大库就可以加载JSON。您可以单独使用香草JS轻松实现所有这些功能:
id --- 1
name --- Written
id --- 2
name --- Verbal
答案 1 :(得分:0)
我像这样尝试过,并且有效!!
...0, 2, 4, 6, 8, 6, 4, 2, 0, 2, 4, 6, 8, 6, 4...
答案 2 :(得分:0)
另一种解决方案-
$.each(data,function(key,value) {
console.log(key + " --- " + value.id + " --- " + value.name);
});