在下面的代码中,我试图从json中提取数据,并且发生的错误很少,我不明白。在我之前的帖子中,有人提到它与关闭问题有关。任何人都可以解释为什么这个问题仍然会发生,尽管我已经改变了" var"到"让"在两个for循环?
我想尝试绑定解决方案,但是,我不明白这些步骤。这是因为我指的是json文件中的循环数组。
function displayData(data) {
var json = JSON.parse(data);
alert (json.projects[0].task_data[1].taskName); //working
for (let i = 0; i < json.projects.length; i++) {
$.ajax({ url: epridlist, method: 'GET' }).then(function (datas) {
alert (json.projects[i].projName); //success load the value
});
for (let j = 0; j < json.projects[i].task_data.length; j++) {
$.ajax({url: tasklist,method: 'GET'}).then(function (data)
{alert (json.projects[i].task_data[j].taskName);});//success only on first row, next row value is undefined
alert (json.projects[0].task_data[1].taskName); //undefined
}
}
}
这是json数据
{"projects":[{"projName":"1","task_data":[{"taskName":"1","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]},[{"taskName":"2","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]}]]},{"projName":"2","task_data":[{"taskName":"3","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]}]}]}
谢谢
答案 0 :(得分:2)
您的JSON数据似乎结构不一致。
在Json Viewer程序中查看JSON时,task_data
的第一个元素是一个对象而第二个是一个数组(见下图):
代码中的下一行会导致问题:
json.projects[0].task_data[1].taskName
答案 1 :(得分:2)
这个问题出现在这里:json.projects[0].task_data[1].taskName
你正在试图加入一个如何不存在的对象。 task_data数组在第二个位置是一个数组,而不是一个对象。解决问题的方法是使用json.projects[i].task_data[0].taskName
加入对象而不是数组。