jquery $ .each嵌套在另一个$ each中。从JSON获取数据

时间:2014-11-26 19:08:45

标签: jquery html json nested each

我想从 JSON 中获取所有值,如下所示:

{
  "id" : "1",
  "latitude" : "-3.7462186",
  "longitude" : "-38.5394332",
  "array":["9","2","3"]
}
{
  "id" : "2",
  "latitude" : "-3.9082186",
  "longitude" : "-3.5394332",
  "array":["1","1","1"]
}
{
  "id" : "3",
  "latitude" : "-4.7462186",
  "longitude" : "-35.5394332",
  "array":["2","2","3"]
 }

并将它们放在HTML表格中。 我尝试使用 $。getJSON方法和两个嵌套的$ .each (jQuery)来尝试获取每个对象的所有值(包括数组值)并将它们放入表格顺序相同:

$.getJSON(URL, function (value) {
    $.each(value, function(i,e) {
        $('#table').append('<tr> <td>'+ e.id+'</td> <td>'+ e.latitude +'</td> <td> '+e.longitude+'</td> ');
           $.each(e.array,function(i)
            {
               $('#table').append('<td>'+e.array[i]+'</td>');
            });
        });
      $('#table').append('</tr>');
    }
 });

但问题是&#39; id&#39;&#39;纬度&#39;和经度&#39;从每个对象放入正确的行和所有数组值&#39;放在最后一行

像这样:

id     |   latitude   |   longitude   |   array1  |  array2  |  array3  |
  1    |  -3.7462186  |  -38.5394332  |
  2    |  -3.9082186  |  -3.5394332   |
  3    |  -4.7462186  |  -35.5394332  |
  9    |      2       |      3        |     1     |    1     |   1     |   2    |    2   |   3   

我必须遵循哪个正确的嵌套结构才能解决此问题?

谢谢。

2 个答案:

答案 0 :(得分:1)

方法.append()与字符串一起使用时,必须使整个字符串包含开始和结束标记。否则,它将关闭所有没有相应结束标记的元素。以下方法将完整字符串row放在一起,然后再将其传递给.append()

var row = '';
$.each(value, function(i,e) {
    row =  '<tr> <td>'+ e.id+'</td> <td>'+ e.latitude +'</td> <td> '+e.longitude+'</td> ';
    $.each(e.array,function(i)  {
        row += '<td>'+e.array[i]+'</td>';
    });
});
row += '</tr>';
$('#table tbody').append( row );

答案 1 :(得分:0)

将最里面的each更改为:

        $.each(e.array,function(ind, obj)
        {
           $('#table').append('<td>'+obj+'</td>');
        });