field
- это ссылка на объекты, над которыми вы зацикливаетесь. Вывод этого в DOM приведет его к строке, следовательно, вы увидите вывод [object Object]
.
Чтобы исправить это, вам вместо этого нужно получить доступ к свойствам объектов и построить HTML, который вы хотите вывести. Также обратите внимание, что из контекста объекта и вашего кода похоже, что вы должны зацикливаться на result.channels
, а не result
. Попробуйте это:
var result = [{
'prtg-version': "xxxxxxx",
treesize: 0,
channels: [{
name: "Downtime",
name_raw: "Downtime",
lastvalue: "",
lastvalue_raw: ""
}, {
name: "Execution Time",
name_raw: "Execution Time",
lastvalue: "19 msec",
lastvalue_raw: 19
}, {
name: "File count",
name_raw: "File count",
lastvalue: "431 #",
lastvalue_raw: 431
}
// more data...
]
}]
jQuery(function($) {
$("button").click(function() {
// AJAX code removed from this demo, as it obviously cannot work
// $.getJSON("https://myurl/api/table.json?blahblahblah", function(result){
$.each(result[0].channels, function(i, field) {
$("div").append(`<p>${field.name}</p>`);
});
// })
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button>Get JSON data</button>
<div></div>