我正在尝试循环一个JSON数组,但是我不确定如何在这种情况下正确地构建每一个,任何想法?
这是$ .get获得的JSON:
[{"Question":"Write your question here",
"Answers":
[{"Answers":"asd",
"Correct":false},
{"Answers":"dasdas",
"Correct":true
}
]},
{"Question":"Write your question here",
"Answers":
[{"Answers":"asdasd",
"Correct":false
}
]
}]
这是Jquery:
$.get("data.php", function(data){
var data = data.replace(/[\[\]']+/g, '')
$.each(data, function(i, q) {
var q = new Question(count++, data.Question);
$.each(data, function(i, val) {
q.addAnswer(data.Answers, Correct, q);
});
});
questions.push(q);
});
编辑:
$.get("data.php", function(data){
$.each(data, function(i, val) {
var q = new Question(count++, val.Question);
questions.push(q);
});
$.each(q.Answers, function(i, val) {
q.addAnswer(val, val.Correct, q);
questions.push(q);
});
});
答案 0 :(得分:2)
此行导致问题:
var data = data.replace(/[\[\]']+/g, '')
您正在尝试调用数组中不存在的“替换”方法。
在这部分中有两(3)个问题。
$.each(data, function(i, q) {
var q = new Question(count++, data.Question);
$.each(data, function(i, val) {
q.addAnswer(data.Answers, Correct, q);
});
});
questions.push(q);
在迭代数组时,您正在调用每个数组。如果您的JSON中有10个问题,最终会得到100个答案。
你可能就是这个意思。
.each(val.Answers, function(i, a) {
q.addAnswer(a.Answers, a.Correct, q);
});
您正在函数中创建一个名为q
的变量,并尝试在问题之外访问它。您应该将questions.push移动到每个函数中。