快速破解(下面会详细介绍):这里是jsfiddle。中间的注释部分是需要工作的。我无法将json数据添加到表中。任何提示都表示赞赏。感谢。
我试图将一些基本数据添加到Google Charts中的表格中。我发现它很容易从JSON的一个级别读取,但是一旦你进入多个级别,我就无法弄清楚如何使它工作。基本上,我想在表中为每个日期/名称/用户分组添加一行。这是我到目前为止(中间的$ .getJSON部分是重要部分):
<script type='text/javascript'>
google.load('visualization', '1', { packages: ['table'] });
google.setOnLoadCallback(drawTable);
function drawTable() {
var array = [['Date', 'Country', 'Users']];
var sample = [new Date(2014, 6, 5), 'USA', 12];
array.push(sample);
$.getJSON('/JSON/Index', { get_param: 'value' }, function (data) {
$.each(data.UsersByDateList, function (key, value) {
$.each(value.UsersByDate, function (key2, value2) {
var item = [new value2.Date, value.Name, value2.Users];
array.push(item);
});
});
});
sample = [new Date(2014, 6, 19), 'USA', 12];
array.push(sample);
var data = google.visualization.arrayToDataTable(array);
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, { showRowNumber: true });
}
</script>
JSON看起来像这样:
{
"NumRecords": "5123",
"UsersByDateList": [
{
"Name": "Steve",
"UsersByDate": [
{
"Date": "Date(2014,5,1)",
"Users": 54
},
{
"Date": "Date(2014,5,2)",
"Users":103
}
]
},
{
"Name": "Jerry",
"UsersByDate": [
{
"Date": "Date(2014,5,1)",
"Users": 63
},
{
"Date": "Date(2014,5,2)",
"Users": 24
}
]
}
]
}
问题可能与我使用的日期格式有关。我试图摆脱新的&#39;关键字以及以不同格式(例如UTC)存储日期,但我已经读过当前格式&#34;日期(YYYY,MM,DD)&#34;是谷歌图表接受的。
答案 0 :(得分:0)
嗯,你有几个错误。首先,你在json中缺少一个]。另外,请更改此部分:
$.each(data.UsersByDateList, function (key, value) {
$.each(value.UsersByDate, function (key2, value2) {
var item = [value2.Date, value.Name, value2.Users];
array.push(item);
});
});
仍然需要修复日期,但这应该消除图表绘制上的错误
更新:你在评论中所做的部分有效,你只需要包含jquery。尽管如此,您的日期格式存在很大问题,因为只有在json格式中设置dataTable中的图表时,才能使用它。此外,始终尽量避免使用eval。你可以查看我在这里做的修复: