繁体   English   中英

遍历对象的json数组

[英]Looping through a json array of objects

我一直在尝试按照另一个stackoverflow问题的示例进行操作:

javascript或jquery:循环多维对象

我将这个问题发布为最后的选择,因为我已经解决了几个小时!

我有一个返回一个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或jquery:循环多维对象 )中,我可以看到json格式的差异,因为在数组的每次迭代中都有两个右括号,这是问题所在吗?

请帮助这让我发疯..

您需要两个嵌套的.each()循环

$.each(data, function(key, value) {
    $.each(value, function(k, v) {
       console.log(v.nfc_id); 
    });
});

小提琴

您的数据是一个数组,因此应使用for (var i = 0; i < data.length; i++)循环。 每个元素都是一个对象,因此您可以var key in obj符号中使用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);
    }
}
for(var i=0, i<data.length;i++)
$.each(data[i], function(key, val) {
    console.log(val.nfc_id);
    console.log(val.description);
});

也许尝试.each jQuery方法? 链接

因此,为了您的成功:

success: function(data){
    $(data).each(function(index, element){
      //log here
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM