0

我正在尝试为来自 Google 可视化 api 的 ColumnChart 创建一个以 JSON 作为参数的 DataTable。

我生成了以下 JSON 对象:

{
    "cols": [
        {"id":"date", "label":"date","pattern":"", "type":"date"},
        {"id":"jobsonstatus", "label":"jobsonstatus", "pattern":"", "type":"number"}
    ],
    "rows": [
        {
            "c": [
                {"v": "01-02-2013", "f": null},
                {"v": 128, "f": null}
            ]
        },
        {
            "c": [
                {"v": "08-02-2013", "f": null},
                {"v": 185, "f": null}
            ]
        },
        {
            "c": [
                {"v": "15-02-2013", "f": null},
                {"v": 142, "f": null}
            ]
        },
        {
            "c": [
                {"v": "22-02-2013", "f": null},
                {"v": 86, "f": null}
            ]
        }
    ]
}

这有什么问题?

也许是别的东西。其余的代码是:

    var chart;      //The chart
var options;    //The options for the chart
var data;       //The data inside the chart

//This function will set up the actual chart but doesn't draw it.           
function init(){
    chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    options = {
        width:600, height:450,      
        legend: {'position': 'top'},
        allowHtml: true
    };                      
}

function changeData(dataPar){
    data = new google.visualization.DataTable(dataPar);
    drawChart();                  
}

function drawChart(){   
    chart.draw(data, options);
}                   

JSON 对象在函数 changeData() 中抛出。

我在ajax部分有这个:

    dataType: "json",       
    success: function(res, textStatus, jqXHR){
       changeData(res);
    }

我收到带有红色背景的错误:

a[dc] 不是函数

有谁知道出了什么问题,应该有什么解决方案?

4

1 回答 1

1

好吧,我自己想通了。

在 cols 中,我将“日期”列的类型设置为日期,但它必须是字符串,因为给定的值是字符串。

因此,如果您从google 可视化图表中得到奇怪的错误,那么您的 json 部分可能有错误,这似乎对JSONLint有效。

我对调试 json 部分的建议是首先使用函数 addColumn() 和 addRows() 制作一个虚拟数据表,然后执行

console.log([DataTable var].toJSON()).

将此输出与您使用之前的脚本和调试创建的 JSON 进行比较。

我有以下 JSON 对象:

{
    "cols": [
        {"id": "date", "label": "date","pattern": "","type": "string"},
        {"id": "newjobs","label": "newjobs","pattern": "","type": "number"}
    ],
    "rows": [
        {"c": [
                {"v": "01-02-2013","f": null},
                {"v": 132,"f": null}
            ]},
        {"c": [
                {"v": "08-02-2013","f": null},
                {"v": 78,"f": null}
            ]},
        {"c": [
                {"v": "15-02-2013","f": null},
                {"v": 105,"f": null}
            ]
        },
        {"c": [
                {"v": "22-02-2013","f": null},
                {"v": 8,"f": null}
            ]}
    ]
}
于 2013-03-13T09:18:59.987 回答