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