我正在尝试使用数据库中的数据创建图表。我创建了一个PHP文件,将数据放入多维数组中。该数组包含四个数组,每个数组有五个值。最后,我在PHP的json_encode() - 方法中回显多维数组。
使用我的Javascript文件,我想获得JSON,但它不完整。我得到了多维数组的第一个数组和第二个数组的第一个数组。
console.log()告诉我有一个错误" TypeError:myObj未定义"在第12行,但我在脚本中找不到错误。
这是我的Javascript:
window.onload=function(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
}
var ctx = document.getElementById("overviewChart");
var data = {
labels: [myObj[0][0], myObj[0][1], myObj[0][2], myObj[0][3], myObj[0][4]],
datasets: [
{
backgroundColor: "rgba(255, 120, 42, 0.7)",
hoverBackgroundColor: "rgba(255, 120, 42, 1)",
borderColor: "rgba(255, 120, 42, 0.9)",
borderWidth: 3,
label : "Offen",
data: [myObj[1][0], myObj[1][1], myObj[1][2], myObj[1][3], myObj[1][4]]
},
{
backgroundColor: "rgba(50, 255, 50, 0.7)",
hoverBackgroundColor: "rgba(50, 255, 50, 1)",
borderColor: "rgba(50, 255, 50, 0.9)",
borderWidth: 3,
label: "Bestätigt",
data: [myObj[2][0], myObj[2][1], myObj[2][2], myObj[2][3], myObj[2][4]]
},
{
backgroundColor: "rgba(255, 30, 30, 0.8)",
hoverBackgroundColor: "rgba(255, 30, 30, 1)",
borderColor: "rgba(255, 30, 30, 0.9)",
borderWidth: 3,
label : "Storniert",
data: [myObj[3][0], myObj[3][1], myObj[3][2], myObj[3][3], myObj[3][4]]
}
]
};
}
}

答案 0 :(得分:0)
你只需在this.readyState == 4&& this.status == 200:
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
}
但是,xmlhttp.onreadystatechange函数的其余部分仍然会为其他readyState值运行,在这种情况下,myObj将是未定义的。
因此,整个函数体应该在if条件内:
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
var ctx = document.getElementById("overviewChart");
var data = {
labels: [myObj[0][0], myObj[0][1], myObj[0][2], myObj[0][3], myObj[0][4]],
datasets: [
{
backgroundColor: "rgba(255, 120, 42, 0.7)",
hoverBackgroundColor: "rgba(255, 120, 42, 1)",
borderColor: "rgba(255, 120, 42, 0.9)",
borderWidth: 3,
label : "Offen",
data: [myObj[1][0], myObj[1][1], myObj[1][2], myObj[1][3], myObj[1][4]]
},
{
backgroundColor: "rgba(50, 255, 50, 0.7)",
hoverBackgroundColor: "rgba(50, 255, 50, 1)",
borderColor: "rgba(50, 255, 50, 0.9)",
borderWidth: 3,
label: "Bestätigt",
data: [myObj[2][0], myObj[2][1], myObj[2][2], myObj[2][3], myObj[2][4]]
},
{
backgroundColor: "rgba(255, 30, 30, 0.8)",
hoverBackgroundColor: "rgba(255, 30, 30, 1)",
borderColor: "rgba(255, 30, 30, 0.9)",
borderWidth: 3,
label : "Storniert",
data: [myObj[3][0], myObj[3][1], myObj[3][2], myObj[3][3], myObj[3][4]]
}
]
}
}
};