#javascript #jquery #json
#javascript #jquery #json
Вопрос:
Я использую следующий код для выполнения AJAX-вызова:
$.ajax({
url: href,
type: 'POST',
data: {},
dataType: "json",
error: function(req, resulttype, exc)
{
// do error handling
},
success: function(data)
{
for (var tracklist in data) {
console.log(tracklist.name); // undefined
console.log(tracklist['name']); // undefined
}
}
});
Что я возвращаю к запросу AJAX, так это:
{"5":{"id":5,"name":"2 tracks","count":2},"4":{"id":4,"name":"ddddd","count":1},"7":{"id":7,"name":"Final test","count":2}}
Что я хотел бы знать, так это как получить доступ к атрибуту name текущего списка дорожек.
Ответ №1:
Вы должны использовать
console.log(data[tracklist].name);
вместо
console.log(tracklist.name);
Ответ №2:
Если вы хотите выполнить итерацию по этим объектам, было бы лучше, если бы вы вернули массив:
[{"id":5,"name":"2 tracks","count":2},{"id":4,"name":"ddddd","count":1},{"id":7,"name":"Final test","count":2}]
Затем вы могли бы использовать цикл for, аналогичный тому, что вы пытались:
for (var tracklist in data) {
console.log(data[tracklist].id);
console.log(data[tracklist].name);
}
Ответ №3:
В цикле:
for (var tracklist in data) {
console.log(tracklist.name); // undefined
console.log(tracklist['name']); // undefined
}
tracklist
это ключ каждого элемента, а не его значение.
Таким образом:
for (var tracklist in data) {
console.log(data[tracklist].name); // ... or ...
console.log(data[tracklist]['name']);
}