我一直试图按照另一个stackoverflow问题来关注一个例子:
javascript or jquery: Looping a multidimensional object
我发布这个问题作为最后的手段,因为我已经问了好几个小时了!
我有一个返回json数组的ajax函数。
AJAX:
$.ajax({ url: 'functions.php',
data: {action: 'getNFCMapping', site: site_id},
type: 'post',
dataType: 'json',
success: function(data) {
//loop the json to get the
for (var key in data) {
console.log(data[key].nfc_id);
}
} //end success
});//end ajax
json数组:
[{"24":{"nfc_id":"1","description":"sdfgdsg"}},{"25":{"nfc_id":"2","description":"dfgdfgdfg"}},{"26":{"nfc_id":"3","description":"fdgdffg"}},{"27":{"nfc_id":"4","description":"dfgdfgdfg"}}]
我最终要做的是在DOM中加载一个带有输入字段(预填充)的表单,成对的nfc_id和description,因此循环的每次迭代都应该输出两个值。
目前的问题是我实际上无法访问每次迭代中的值,例如你可以看到我试图记录每次迭代的nfc_id,但它只是在控制台中显示为对象。
在示例(javascript or jquery: Looping a multidimensional object)中,我可以看到json格式的差异,因为我在数组的每次迭代中都有两个右括号,这就是问题所在吗?
请帮助这让我发疯..
答案 0 :(得分:2)
您需要两个嵌套.each()
loops:
$.each(data, function(key, value) {
$.each(value, function(k, v) {
console.log(v.nfc_id);
});
});
答案 1 :(得分:1)
您的数据是一个数组,因此您应该使用for (var i = 0; i < data.length; i++)
循环。每个元素都是一个对象,因此您使用var key in obj
表示法:
for (var i = 0; i < data.length; i++) {
for (var key in data[i]) {
console.log(data[i][key].nfc_id);
}
}
答案 2 :(得分:-1)
for(var i=0, i<data.length;i++)
$.each(data[i], function(key, val) {
console.log(val.nfc_id);
console.log(val.description);
});
答案 3 :(得分:-1)
也许尝试.each
jQuery方法? Link
所以为了你的成功:
success: function(data){
$(data).each(function(index, element){
//log here
}
}