Мой JSON файл выглядит следующим образом:
[{ "articles": [
{ "1": { "sections":
[ {"1": "Lots of stuff here."} ]
}
},
{ "2": { "sections":
[ {"1": "And some more text right here"} ]
}
}
}]
Основная предпосылка заключается в том, что он имеет один элемент в общем массиве, называемый "articles"
, который равен массиву "sections"
.
Другими словами, это конституция, поэтому она выглядит так:
Статья X
-Section A
-Section B
-Section C
Статья Z
...
Я хочу, чтобы вытащить каждую статью и загрузить ее в
<div class="alert text-black" id="article">
<p class="lead" id="articleHeader"><strong>Article 1</strong></p>
<dl>
<dt id="article_section">Section 1</dt>
<dd id="article_sectionINFO">this stuff belongs to section 1</dd>
</dl>
</div>
и это сценарий, который у меня есть до сих пор:
var loadEvents = function(d){
$.each(d, function(i){
var articleN = i;
var articleID = "article" + i;
var articleHeaderID = "articleHeader" + i;
var articleHeader = "<p class='lead' id='articleHeader'><strong>Article " + i + "</strong></p>";
var mySections = new Array();
$.each(d, function(i){
var sectionN = i;
var sectionID = "article" + articleN + "section" + sectionN;
var sectionINFO = sectionID + "INFO";
mySections[k] =
"<dt id='" + sectionID +"'> Section " + sectionN + "</dt>" +
"<dd id='" + sectionINFO +"'>" + d[sectionN].
})
$("#eventHolder").append(new_block(articleID, articleHeaderID, articleHeader)); //to call the new element
})}
$.getJSON('data/constitution.json', loadConstitution);
В основном, я просто хочу, чтобы иметь возможность воспроизводить большую ячейку (как показано в коде <html>
выше) для каждой статьи, со списком (<dl></dl>
) для каждого раздела. Как правильно получить данные из файла JSON?
Поскольку у вас есть массив, содержащий объект, который содержит свойство article
которое представляет собой массив, содержащий статьи, вам нужно перейти к этому свойству, чтобы перебрать их. Используйте два свойства в функции обратного вызова, чтобы вы могли получить доступ к объекту статьи:
$.each(d[0].articles, function(i, article) {
Поскольку каждый элемент является объектом, который содержит свойство sections
которое представляет собой массив, содержащий разделы, вам нужно перейти к этому свойству в каждом элементе. Используйте другую индексную переменную для разделов, чтобы вы все еще могли получить доступ к переменной i
используемой для индекса статьи:
var mySections = article.sections;
$.each(mySections, function(j, section) {
Внутри этого цикла j
- это индекс раздела, section
- это строка раздела, а i
- это затем индекс статьи.
Это должно привести вас к правильному пути с циклом, остальное в основном просто использует правую переменную для каждого значения.
d[j]
или mySections[j]
?
mySections[j]
или просто section
.