Я чувствую, что метод .each() на самом деле не работает. Вот мой код:jQuery .each метод, возвращающий последнее значение
function makeHTML(data) {
console.info(data.categories);
$(data).each(function() {
let createButton = `
<div class="col-md-6">
<button type="button" class="btn btn-default">
<a href="${data.categories.category.id}"
target="_blank">${data.categories.category.title}</a>
</button>
</div>
`;
document.getElementById('table').innerHTML = createButton;
});
}
$(document).ready(function() {
$.ajax({
type: 'GET',
contentType: "application/json; charset=utf-8",
url: "json/data.json",
dataType: "json",
success: makeHTML,
error: function (result) {
console.error(result);
}
});
});
Это возвращает только последний набор в формате JSON, который выглядит следующим образом:
{
"categories": {
"category": {
"title": "Something",
"id": 1
},
"category": {
"title": "Something Else",
"id": 2
}
}
}
Я попытался добавить отладчик; сразу после innerHTML = createButton; для просмотра цикла, но он входит в jQuery только один раз. Это странно. Я не знаю, что я делаю неправильно?
Какова цель каждого из них? Я не вижу, чтобы вы использовали какие-либо параметры внутри обратного вызова ... Разве 'data.categories' не будет всегда одинаковым? – elclanrs
'categories' - это объект, который имеет свойство' category' _twice_. – robertklep
Как и было предложено, вы, вероятно, хотите, чтобы 'categories' были массивом. – robertklep