2014-11-08 3 views
1

Я делаю мелочи с JSON, и я застрял. Во-первых, я могу вытащить мои данные из JSON и получить его для отображения в списке после работы через документацию, например, так:Доступ к объекту JSON в переменной Javascript

$.getJSON('/trivia.json', function(data) { 
    var items = [] 
    $.each(data, function (item, i) { 
     items.push('<li id="' + i.order + '">' + i.question + ' - ' + i.choices + i.correct + '</li>'); 
    }); 

    $('<ul/>', { 
     'class': 'my-new-list', 
     html: items.join('') 
    }).appendTo('#example'); 

}); 

Это прекрасно работает при создании списка вопросов и ответов, так что я могу Убедитесь, что я правильно нахожу локальный файл JSON.

Мой следующий шаг - получить ответы на вопросы и ответы, которые будут храниться в моей переменной Javascript для викторины для wrok. Когда я сделал пример викторины, хранить данные так:

var quiz = [ 
    { 
     "question" : "Q1: Who came up with the theory of relativity?", 
     "choices" : [ 
           "Sir Isaac Newton", 
           "Nicolaus Copernicus", 
           "Albert Einstein", 
           "Ralph Waldo Emmerson" 
          ], 
     "correct" : "Albert Einstein", 
    }]; 

Я не хочу, чтобы вопросы, чтобы быть статическим, поэтому я хочу, JSON, чтобы взять на поставку вопрос и выбор.

Я попытался вызвать функцию appendTo для викторины var, но она не передает данные, как это было, когда я создал список. Любые идеи о том, как я могу задать вопрос, выбор и правильные наборы данных для применения в викторине var?

+1

не то, что только значение 'данных ', который возвращается' $ .getJSON'? Кстати, вам нужно перебирать «i.choices», это не строка, которую вы можете объединить. – Barmar

+0

Mmmh, 'var quiz = data;'? –

ответ

1

Вы можете обновить свой код, чтобы добавить grapped данные из запроса Ajax для викторины переменной и перебрать выбор, чтобы напечатать их как следующий код:

var quiz = [ 
    { 
     "question" : "Q1: Who came up with the theory of relativity?", 
     "choices" : [ 
           "Sir Isaac Newton", 
           "Nicolaus Copernicus", 
           "Albert Einstein", 
           "Ralph Waldo Emmerson" 
          ], 
     "correct" : "Albert Einstein", 
    }];  
$.getJSON('/trivia.json', function(data) { 
    var items = [] 
    $.each(data, function (item, i) { 
     var q = {"question": i.question, "correct": i.correct, "choices": []}; 
     var choicesStr = ""; 
     $.each(i.choices, function (it, choice) { 
      choicesStr += "<span>choice</span></br>"; 
      q.choices.push(choice); 
     } 
     quiz.push(q); 
     items.push('<li id="' + i.order + '">' + i.question + ' - ' + choicesStr + i.correct + '</li>'); 

    }); 

    $('<ul/>', { 
     'class': 'my-new-list', 
     html: items.join('') 
    }).appendTo('#example'); 

}); 
Смежные вопросы