Javascript 将JSON对象中的JSON数组转换为jquery中的数组
我正在尝试转换以下json:Javascript 将JSON对象中的JSON数组转换为jquery中的数组,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我正在尝试转换以下json: { "questions": [ { "question#1": "How much is 3+1", "correct answer": 1, "answers": { "ans#1": "5", "ans#2": "4", "ans#3": "3"
{
"questions": [
{
"question#1": "How much is 3+1",
"correct answer": 1,
"answers": {
"ans#1": "5",
"ans#2": "4",
"ans#3": "3"
}
},
{
"question#5": "How much is 2+4",
"correct answer": 0,
"answers": {
"ans#1": "6",
"ans#2": "4",
"ans#3": "7",
"ans#4": "5"
}
}
]
}
在Jquery中使用以下代码:
$(document).ready(function(){
$.getJSON("data.json", function(json) {
console.log(json); // this will show the info it in firebug console
var sarit = Object.keys(json); // "a"
});
/*var update = document.getElementById("content");
update.innerHTML("test");*/
document.getElementById("content").innerHTML = JSON.stringify(sarit);
});
我收到一个错误Uncaught ReferenceError:sarit未定义
如何获取每个问题的答案值,并在html文件中使用它,即contentsarit的范围是
getJSON
的成功处理程序,它不存在于外部
另外,考虑到
getJSON
是异步运行的,因此在调用此方法后根据响应在中间使用语句是错误的。ajax调用在执行下一行时不会完成。sarit
在document.getElementById(“content”).innerHTML=JSON.stringify(sarit)时不存在调用了code>,但它不在范围内,因此即使它已被调用,也无法看到它。请尝试此操作
$(document).ready(function(){
$.getJSON("data.json", function(json) {
console.log(json); // this will show the info it in firebug console
var sarit = Object.keys(json); // "a"
document.getElementById("content").innerHTML = JSON.stringify(sarit);
});
});
也就是说,他只会让你的html页面显示[“问题”]
。为了获得answers值,您必须遍历json以检索如下值:
$(document).ready(function(){
$.getJSON("data.json", function(json) {
var anserFor1st = json.questions[0].answers;
var anserFor2nd = json.questions[1].answers;//If it's more than two use a loop
document.getElementById("content").innerHTML = JSON.stringify(anserFor1st) + "<br/>" + JSON.stringify(anserFor2nd);
});
});
$(文档).ready(函数(){
$.getJSON(“data.json”),函数(json){
var anserFor1st=json。问题[0]。答案;
var anserFor2nd=json.questions[1].answers;//如果超过两个,则使用循环
document.getElementById(“content”).innerHTML=JSON.stringify(anserFor1st)+“
”+JSON.stringify(anserFor2nd);
});
});
谢谢,它现在可以工作了!问题是答案是这样的{“ans#1”:“5”,“ans#2”:“4”,“ans#3”:“3”}{“ans#1”:“20”,“ans#2”:“10”,“ans#3”:“16”,“ans#4”:“12”,“ans#5”:“14”,“ans#6”:“18”}我的注意力只是显示值(答案本身)如果您只想显示答案本身,请在答案中循环创建一个字符串,然后显示它们,例如var aString=“”代码>Object.keys(anserFor1st).forEach(函数(k){aString+=anserFor1st[k]+“
”;})代码>Object.keys(anserFor2nd).forEach(函数(k){aString+=anserFor2nd[k]+“
”;})代码>document.getElementById(“内容”).innerHTML=aString如果你认为答案是正确的,接受也是礼貌的:)我不知道“接受”这个词。如果我知道如何……我会欣然接受的。。。。我是怎么做到的?点击左边这篇文章下面的复选标记。(我想它就在箭头的正下方)。看:我接受了:)又是10倍!最后一个问题:我应该如何动态地推送这些值。我应该建立JS多选问卷。。所以我需要动态显示不同问题的值。。。我必须通过后退和前进按钮在问题之间切换。