[英]Jquery each function not worked
我有以下我通过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>
如果我打印数据的控制台,它会显示给我,但是在循环中无法正常工作。 但是在控制台中,它给了我undefined 。 我想要在数组中获得的值。
响应对象是一个数组,被放入名为data
的变量中。 在$.each
函数中,您尝试访问数组中的.key
和.value
项目。 但是数组没有这些值。
您应该在此处使用独立变量命名 .each
回调具有的参数-即key
和value
。 它们不是data
属性 ,而是独立变量:
$.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);
});
});
输出:
id --- 1
name --- Written
id --- 2
name --- Verbal
另外请注意,不需要像jQuery这样的大库就可以加载JSON。 您可以仅使用Vanilla JS轻松实现所有这些目标:
document.addEventListener('DOMContentLoaded', () => {
const response = '<?php echo $arrVariable; ?>';
const data = JSON.parse(response);
Object.values(data).forEach((obj) => {
Object.entries(obj).forEach(([key, val]) => {
console.log(key + ' --- ' + val);
});
});
});
我这样尝试过,它有效!
for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(data[key]['id']);
console.log(data[key]['name']);
}
}
另一个解决方案-
$.each(data,function(key,value) {
console.log(key + " --- " + value.id + " --- " + value.name);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.