我想从 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
我必须遵循哪个正确的嵌套结构才能解决此问题?
谢谢。
答案 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>');
});