【问题标题】:Create Data Table with JSON in Google Charts在 Google 图表中使用 JSON 创建数据表
【发布时间】:2014-05-07 19:06:58
【问题描述】:

我有一个硬编码的 JSON 对象,我将其传递给 google.visualization.DataTable() 以创建数据表对象,但似乎出了点问题。我在可视化 api 中发现了一个 JS 错误:“未捕获的 TypeError:未定义不是函数”。这是 JSON 数据:

var jsonData = {
    cols: [
        {id: 'date', label: 'Sample Date', type: 'date'},
        {id: 'countervalue', label: 'Counter Value', type: 'number'}
    ],

    rows: [
        {c: [ {v: Date(2014, 4, 30, 10, 30, 0)}, {v: 2457.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 30, 15)}, {v: 2458.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 30, 30)}, {v: 2459.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 30, 45)}, {v: 2452.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 31, 0)}, {v: 2451.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 31, 15)}, {v: 2443.0} ] },
        {c: [ {v: Date(2014, 4, 30, 10, 31, 30)}, {v: 2444.0} ] }
    ]
};

这就是看起来要爆炸的地方:

var data = google.visualization.DataTable(jsonData);

这是解决方案的 JSFiddle: http://jsfiddle.net/jcaine04/3PJph/2/

【问题讨论】:

  • 仅供参考,this is not a JSON object,这是一个普通的 JavaScript 对象。您的问题与 JSON 没有任何关系,因此我建议您相应地更新它。
  • 此解决方案最终将调用返回 JSON 的 Web 服务,但出于测试目的,我对这个值进行了硬编码。所以我不会删除这个问题的 JSON 相关性。编辑:这是我要重新创建的链接:google-developers.appspot.com/chart/interactive/docs/…
  • 我尝试使用 google.visualization.DataTable(JSON.stringify(jsonData)) 仍然得到相同的结果。
  • 尝试使用下面提到的'NEW'构造函数

标签: javascript html json google-visualization


【解决方案1】:

代码运行良好,您只需要更改:

var data = google.visualization.DataTable(jsonData);

收件人:

var data = new google.visualization.DataTable(jsonData);

另外,将 jsfiddle 从 onLoad 更改为 noWrap ,如果不是 drawChart() 将不会执行。最后,当你修复它会抛出谷歌错误:饼图应该有一个字符串类型的第一列×

【讨论】:

  • 感谢您的帮助。 PieChart 是复制/粘贴错误,我实际上使用的是 LineChart。我仍然得到一个未定义的谷歌错误不是一个函数。我更新了 jsfiddle 以显示:jsfiddle.net/jcaine04/3PJph/4
  • @jcaine04 的原因也很相似!将您所有的 v: Date(2014, 4, 30, 10, 30, 45)} 更改为 v: new Date(2014, 4, 30, 10, 30, 45)} 即可;)
  • 使用 JSON 字符串,您实际上希望日期是字符串:"Date(2014, 4, 30, 10, 30, 45)" 而不是 new Date(2014, 4, 30, 10, 30, 45),因为 Date 对象不是有效的 JSON。
  • 但这对于硬编码值是可以的。我需要动态地做。那我该怎么做呢?如何将 JSON 传递给谷歌的地图?
  • @RohannG 它不是硬编码的,json 是动态的,所以图表会根据你的 json 变化。如果您从服务器端生成 json,只需使用 @asgallant 所说的日期:"Date(2014, 4, 30, 10, 30, 45)"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
相关资源
最近更新 更多