Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试从JSON文件填充JQuery中的列表。如何调试?_Javascript_Jquery_Html_Json_Firebug - Fatal编程技术网

Javascript 尝试从JSON文件填充JQuery中的列表。如何调试?

Javascript 尝试从JSON文件填充JQuery中的列表。如何调试?,javascript,jquery,html,json,firebug,Javascript,Jquery,Html,Json,Firebug,所以我有一个JSON文件,需要从中获取测验问题。现在,我只是将问题作为对象存储在数组中。每个问题对象都有“text”(问题本身)、“choices”(可能答案的数组)和“answer”(对应于正确答案选择位置的int) 如何检查我是否正确存储了问题对象?我想创建一个问题列表,我尝试用问题[I].text填充列表,但没有成功。我安装了Firebug来调试正在发生的事情,但我不完全确定如何最好地利用它 JSON的格式如下: { "text": "What does the author least

所以我有一个JSON文件,需要从中获取测验问题。现在,我只是将问题作为对象存储在数组中。每个问题对象都有“text”(问题本身)、“choices”(可能答案的数组)和“answer”(对应于正确答案选择位置的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
}
我的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')


});
})
$(文档).ready(函数(){
var问题=[];
$.getJSON('quick.js',函数(数据){
var i=0;
对于(i=0;i试试这个.)

var ques=[];
$.getJSON('quiz.js',function(data){
for(var i in data)
{
var text =data[i].text;
var choic=data[i].choices;
var output='<li>'+text+'</li>';
}
$('#list').empty().append(output);
});
var ques=[];
$.getJSON('quick.js',函数(数据){
用于(数据中的var i)
{
var text=数据[i]。text;
var choic=数据[i]。选择;
变量输出=“
  • ”+文本+”
  • ”; } $('#list').empty().append(输出); });
    当你到达选择数组时,你真的在迭代它吗

    您或者需要使用jQuery中的
    $。每个
    ,或者如果您想要纯javascript

    for (property in object) {
      if (object.hasOwnProperty(property)) {
        // do stuff
      }
    } 
    

    据我所知: 问题是由几个元素组成的数组。这些元素依次是由三个元素组成的数组(文本、选项和答案)

    您正在jquery选择器中为
    每个
    语句使用问题数组

    下面是一个更好的方法来做你想做的事情:

    $.each(questions, function (i, value) {
        var text = questions[i][0];
        var choice = questions[i][1];
        var answer = questions[i][2];
        var output='<li>'+text+'</li>';
        // rest of your code using text, choices and answers
    });
    
    $。每个(问题、函数(i、值){
    var text=问题[i][0];
    var选择=问题[i][1];
    var答案=问题[i][2];
    变量输出=“
  • ”+文本+”
  • ”; //其余代码使用文本、选项和答案 });
    您使用的每个
    都有一个错误。第二,您必须意识到您在JSON响应中得到了一个对象对象。您需要迭代包含问题/答案数据的每个对象,并进一步迭代该问题/答案对象。此外,您在该嵌套对象中嵌套了一个数组,并且need循环通过它来获取您的问题。请看一些伪代码:

    //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
            }
        }
    }
    

    你在firebug控制台中看到任何错误消息吗?不,我只是不知道如何使用它。我认为我的问题数组被正确填充,但我说不出来。我看到了这一点:我喜欢fiddle正在做的事情,但是否可以将所有内容存储在一个变量中,然后像那样进行迭代?请查看我的代码编辑。我尝试过使用fiddle但它不起作用——有什么想法吗?我不知道为什么它对一个问题对象起作用,但当我给它整个JSON文件时,它突然失败了。看看数据对象的格式。不要认为最后保存的JSFIDLE,所以这里有一个,我尝试了一个,但它现在速度非常慢,所以可能没有保存。请查看我的编辑。你是正因为如此,我可以得到一个充满[object object]的列表,但当我添加第二个$。每个$时,我都会得到一个白色页面。我最终玩了这个,它工作得很好。我在原始问题中发布了我的固定代码。
    $.each(questions, function (i, value) {
        var text = questions[i][0];
        var choice = questions[i][1];
        var answer = questions[i][2];
        var output='<li>'+text+'</li>';
        // rest of your code using text, choices and answers
    });
    
    //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
            }
        }
    }