невозможно вытащить данные из json
Помогите докапаться до "answer_text" перебором.
Уже и ['answers'][0][0] пытался, и ['answers'][0]['answer_text'].
Как проверить на undefined?
Ответ только: [object Object],[object Object],[object Object]
Вот перебор:
$.each(ticketsArr,function(i,data) {
$('.tickets .caps').append('<li class="cap '+(i==0?'active':'')+'"><a href="#">'+parseInt(i+1)+'</a></li>')
$('.tickets .tabs').append(
'<div class="tab '+(i==0?'active':'')+'">'+
data['title']+
'<div class="image" style="background: url(/wp-content/themes/reboot_child/'+data['image']+') no-repeat center center"></div>'+
data['question']+
$.each(data['answers'],function(ii){
(!!ii?
'<div class="answer">\
<a href="#">'+data['answers'][ii]['answer_text']+'</a>\
</div>':'')
})+
'</div>'
);
});
Что надо дописать?
Через точку - как к объектам - НИКАК, ну просто НЕТ,.. консоли ответ.
Вот масс, собственно:
[
{
"title": "Вопрос 1",
"ticket_number": "Билет 1",
"ticket_category": "A,B",
"image": "./images/no_image.jpg",
"question": "В каком случае водитель совершит вынужденную остановку?",
"answers": [
{
"answer_text": "Остановившись непосредственно перед пешеходным переходом, чтобы уступить дорогу пешеходу",
"is_correct": false
},
{
"answer_text": "Остановившись на проезжей части из-за технической неисправности транспортного средства",
"is_correct": true
},
{
"answer_text": "В обоих перечисленных случаях",
"is_correct": false
}
],
"correct_answer": "Правильный ответ: 2",
"answer_tip": "«Вынужденная остановка» - прекращение движения транспортного средства, связанное с его технической неисправностью, опасностью, создаваемой перевозимым грузом, состоянием водителя (пассажира) или появления препятствия на дороге.(Пункт 1.2 ПДД, термин «Вынужденная остановка»)",
"topic": [
"Общие положения"
],
}
]
Ответы (2 шт):
Автор решения: rusgeli
→ Ссылка
Ваша проблема не в том, как обратиться к объекту json, а в том, какие вы пути для вывода используете. Если вы обратили внимание, внутренний each даже теги не возвращает. Честно, не знаю и не нашел, что возвращает метод each, но скорее всего это объекты jQuery, которые у Вас и отображались.
Попробуйте вот такой вариант:
$.each(ticketsArr,function(i,data) {
$('.tickets .caps').append('<li class="cap '+(i==0?'active':'')+'"><a href="#">'+parseInt(i+1)+'</a></li>')
let answers = ''
$.each(data['answers'],function(ii){
answers += '<div class="answer">\<a href="#">'+ data['answers'][ii]['answer_text'] +'</a>\</div>'
})
$('.tickets .tabs').append('<div class="tab '+(i==0?'active':'')+'">'+ data['title']+'<div class="image" style="background: url(/wp-content/themes/reboot_child/'+data['image']+') no-repeat center center"></div>'+data['question'] + answers + '</div>');
});
Автор решения: XelaNimed
→ Ссылка
Без jQuery...
let data = [
{
"title": "Вопрос 1",
"ticket_number": "Билет 1",
"ticket_category": "A,B",
"image": "./images/no_image.jpg",
"question": "В каком случае водитель совершит вынужденную остановку?",
"answers": [
{
"answer_text": "Остановившись непосредственно перед пешеходным переходом, чтобы уступить дорогу пешеходу",
"is_correct": false
},
{
"answer_text": "Остановившись на проезжей части из-за технической неисправности транспортного средства",
"is_correct": true
},
{
"answer_text": "В обоих перечисленных случаях",
"is_correct": false
}
],
"correct_answer": "Правильный ответ: 2",
"answer_tip": "\"Вынужденная остановка\" - прекращение движения транспортного средства, связанное с его технической неисправностью, опасностью, создаваемой перевозимым грузом, состоянием водителя (пассажира) или появления препятствия на дороге.(Пункт 1.2 ПДД, термин \"Вынужденная остановка\")",
"topic": [
"Общие положения"
],
}
].forEach(function(item){
item.answers.forEach(function(answer){
console.log("Text: %s", answer.answer_text);
console.log("Correct: %o", answer.is_correct);
console.log("-------------------------------");
});
});