Javascript 谷歌图表“;表中没有列“;

Javascript 谷歌图表“;表中没有列“;,javascript,json,google-visualization,Javascript,Json,Google Visualization,我正在为谷歌面积图生成一个数据表。我生成的表如下所示。JSON进行验证,看起来是正确的,但当输入到图表时,图表显示“Tablehasnoocolumns”错误 JSON还与上的示例文件中的JSON匹配 以下是我的JSON数据: { "cols":[ {"id":"","label":"date","type":"string"}, {"id":"","label":"run","type":"number"}, {"id":"","label":"passed","t

我正在为谷歌面积图生成一个数据表。我生成的表如下所示。JSON进行验证,看起来是正确的,但当输入到图表时,图表显示“Tablehasnoocolumns”错误

JSON还与上的示例文件中的JSON匹配

以下是我的JSON数据:

{
  "cols":[
    {"id":"","label":"date","type":"string"},
    {"id":"","label":"run","type":"number"},
    {"id":"","label":"passed","type":"number"}
  ],
  "rows":[
    {"c":[{"v":"2012-07-20"},{"v":0},{"v":0}]},
    {"c":[{"v":"2012-07-23"},{"v":0},{"v":0}]}
  ]
}
以下是我如何获取数据并将其提供给图表:

function loadData()
{
    var request=new XMLHttpRequest();
    request.onreadystatechange=function()
    {
        if (request.readyState==4 && request.status==200)
        {
            return request.responseText;
        }
    }
    request.open("GET","testsrun.php?json=true&branch=test",true);
    request.send();
}

google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
    var json = loadData();
    var data = new google.visualization.DataTable(json);

    var options = {
        vAxis: {minValue: 0}
    };

    var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
    chart.draw(data, options);
}

另外,我知道我可以使用date对象而不是字符串来表示日期,我希望在解决最初的问题之前不要将其过度复杂化。

您的
loadData
函数不会返回任何内容,因此
json
变量为
null
。我建议对您的代码稍作重组,以获得您想要的效果:

function drawChart (json) {
    var data = new google.visualization.DataTable(json);

    var options = {
        vAxis: {minValue: 0}
    };

    var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
    chart.draw(data, options);
}
function loadData () {
    var request=new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
            drawChart(request.responseText);
        }
    }
    request.open("GET","testsrun.php?json=true&branch=test",true);
    request.send();
}
google.load('visualization', '1', {packages:['corechart'], callback: loadData});
此外,JSON中的数字将作为字符串输入,这将导致图表出现问题。您需要将它们作为数字输入,例如,
{“v”:“0”}
应该是
{“v”:0}
。如果使用PHP的
json\u encode
函数构建json,则可以将
json\u NUMERIC\u CHECK
作为第二个参数传递给函数调用,以确保正确输入数字:

json_encode($myData, JSON_NUMERIC_CHECK);

我正在返回request.responseText in request.onreadystatechange哦,我现在明白了。函数即将结束,回调将在稍后发生,因此变量已被赋值为null。谢谢