尝试从JSON文件填充JQuery中的列表.怎么调试?

Amr*_* E. 6 html javascript jquery firebug json

所以我有一个JSON文件,我需要从中获取测验问题.现在,我只是将问题存储在数组中作为对象.每个问题对象都有"文本"(问题本身),"选择"(可能的答案数组)和"答案"(对应于正确答案选择位置的int).

如何检查我是否正确存储了问题对象?我想创建一个问题列表,我尝试使用问题[i] .text填充我的列表,但它不起作用.我安装了Firebug来调试发生了什么,但我不完全确定如何充分利用它.

JSON采用以下格式:

{
"text": "What does the author least like about Eclipse?", 
"choices": [
    "The plugin architecture.",
    "FindBugs.",
    "Refactoring.",
    "The Run As menu."],
"answer": 3
}
Run Code Online (Sandbox Code Playgroud)

我的JavaScript文件:

$(document).ready(function(){

var questions=[];
$.getJSON('quiz.js',function(data){

     var i=0;
     for(i=0;i<data.length;i++){
        questions[i]=[String(data[i].text),String(data[i].choices),int(data[i].answer)];

    }

    var list = $('#list')
    $(questions).each(function(_, text) {
    var item = $('<li/>')
    var link = $('<a/>').html(text)
    link.click(function() { alert(text) })
    item.append(link)
    list.append(item)
    })

    $('#list').listview('refresh')


});
})
Run Code Online (Sandbox Code Playgroud)

最后,一些HTML:

 <div data-role="content">
    <ul id="list" data-role="listview">
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我知道这是一个很长的问题,但我非常感谢任何帮助.最终目标是提供一个问题列表,单击这些问题时,会显示答案选项并提供一个Toast,以通知用户所选选项是否正确.如果回答正确,我还想在绿色列表中突出显示问题,否则为红色.

编辑:

工作代码:

$(document).ready(function(){

$.getJSON('quiz.js',function(data){

var questions = data;
var list = $('#list')

$(questions).each(function(index, object) {

 $.each(object, function(key, value){

    if(key === 'text'){
        //do something with qustion

            var item = $('<li/>')
            var link = $('<a/>').html(value)
            link.click(function() { alert(value) })
            item.append(link)
            list.append(item)
            $('#list').listview('refresh')
        }

      });
    });

  });
});
Run Code Online (Sandbox Code Playgroud)

小智 2

你用each错了。第二,您必须意识到您正在 JSON 响应中返回一个对象的对象。您需要迭代包含问题/答案数据的每个对象,并进一步迭代该问题/答案对象。此外,您有一个嵌套在该嵌套对象中的数组,并且需要循环遍历该数组来获取您的问题。看一些伪代码:

//will give you each object your data
$.each(data, function(key, object){

    //do something with my [Object, Object]
    $.each(object, function(key, value){

        if(key === 'text'){
            //do something with qustion
        }

        if(key === 'choices'){
            //loop over array
        }
    }
}
Run Code Online (Sandbox Code Playgroud)