【问题标题】:Google Chart Data from PHP file [closed]来自 PHP 文件的 Google 图表数据 [关闭]
【发布时间】:2016-08-26 19:22:15
【问题描述】:

我正在尝试生成一个这样的图表:

https://jsfiddle.net/x1rjLsav/

我的 PHP 文件返回数组如下:

Array
(
    [0] => [{v: [16, 0, 0], f: 04 PM}, 747]
    [1] => [{v: [17, 0, 0], f: 05 PM}, 614]
    [2] => [{v: [9, 0, 0], f: 09 AM}, 1080]
    [3] => [{v: [10, 0, 0], f: 10 AM}, 1472]
    [4] => [{v: [11, 0, 0], f: 11 AM}, 1191]
    [5] => [{v: [12, 0, 0], f: 12 PM}, 1142]
    [6] => [{v: [13, 0, 0], f: 01 PM}, 1156]
    [7] => [{v: [14, 0, 0], f: 02 PM}, 1331]
    [8] => [{v: [15, 0, 0], f: 03 PM}, 885]
    [9] => [{v: [18, 0, 0], f: 06 PM}, 503]
    [10] => [{v: [19, 0, 0], f: 07 PM}, 333]
    [11] => [{v: [20, 0, 0], f: 08 PM}, 206]
    [12] => [{v: [21, 0, 0], f: 09 PM}, 205]
    [13] => [{v: [22, 0, 0], f: 10 PM}, 185]
    [14] => [{v: [23, 0, 0], f: 11 PM}, 141]
    [15] => [{v: [24, 0, 0], f: 12 AM}, 105]
    [16] => [{v: [25, 0, 0], f: 12 AM}, 74]
    [17] => [{v: [26, 0, 0], f: 12 AM}, 58]
    [18] => [{v: [27, 0, 0], f: 12 AM}, 80]
    [19] => [{v: [4, 0, 0], f: 04 AM}, 87]
    [20] => [{v: [5, 0, 0], f: 05 AM}, 115]
    [21] => [{v: [6, 0, 0], f: 06 AM}, 102]
    [22] => [{v: [7, 0, 0], f: 07 AM}, 131]
    [23] => [{v: [8, 0, 0], f: 08 AM}, 604]
)

我将此数组存储在变量 jsonData 中,当我将其登录到 console 时,我得到相同的输出。

但是,当我将这些数据添加到图表中时,如下所示,我得到了错误:

给定的每一行必须是 null 或数组。

var data = new google.visualization.DataTable();
  data.addColumn('string', 'Time of Day');
  data.addColumn('number', 'Emails');
  data.addRows([jsonData]);

我修改了 PHP 文件并得到了下面的 JSON 输出

[["[{v: [16, 0, 0], f: 04 PM}, 747]"],["[{v: [17, 0, 0], f: 05 PM}, 614]"],["[{v: [9, 0, 0], f: 09 AM
}, 1080]"],["[{v: [10, 0, 0], f: 10 AM}, 1472]"],["[{v: [11, 0, 0], f: 11 AM}, 1191]"],["[{v: [12, 0
, 0], f: 12 PM}, 1142]"],["[{v: [13, 0, 0], f: 01 PM}, 1156]"],["[{v: [14, 0, 0], f: 02 PM}, 1331]"]
,["[{v: [15, 0, 0], f: 03 PM}, 885]"],["[{v: [18, 0, 0], f: 06 PM}, 503]"],["[{v: [19, 0, 0], f: 07 PM
}, 333]"],["[{v: [20, 0, 0], f: 08 PM}, 206]"],["[{v: [21, 0, 0], f: 09 PM}, 205]"],["[{v: [22, 0, 0
], f: 10 PM}, 185]"],["[{v: [23, 0, 0], f: 11 PM}, 141]"],["[{v: [24, 0, 0], f: 12 AM}, 105]"],["[{v
: [25, 0, 0], f: 12 AM}, 74]"],["[{v: [26, 0, 0], f: 12 AM}, 58]"],["[{v: [27, 0, 0], f: 12 AM}, 80]"
],["[{v: [4, 0, 0], f: 04 AM}, 87]"],["[{v: [5, 0, 0], f: 05 AM}, 115]"],["[{v: [6, 0, 0], f: 06 AM}
, 102]"],["[{v: [7, 0, 0], f: 07 AM}, 131]"],["[{v: [8, 0, 0], f: 08 AM}, 604]"]]

我修改 JAVA 脚本如下,它应该可以工作,但它也不能工作。

var data = new google.visualization.DataTable();
  data.addColumn('string', 'Time of Day');
  data.addColumn('number', 'Emails Opens');
  data.addRows(jsonData);

【问题讨论】:

  • 查看DataTable constructor method 下的示例以了解 google 将接受的 json 格式 -- here is an example 使用 php 构建 json
  • 你好@WhiteHat 我在搜索之前尝试了这个例子,但它不起作用。您的输出不同,我需要的输出也不同,请参阅上面的 JS 字段我如何需要输出。请让我知道如何获得这样的结果。谢谢
  • 不确定我是否遵循了这个问题,小提琴链接是空白的,并且发布的“数组”看起来不像有效的 json、javascript 或 php。你能发布console.log(jsonData);的结果吗??
  • 你好,我需要这种格式的数据行 ata.addRows([ [{v: [8, 0, 0], f: '8 am'}, 1], [{v: [ 9, 0, 0], f: '9 am'}, 2], [{v: [10, 0, 0], f:'10 am'}, 3],你的 php 代码的结果就像这 {"cols":[{"label":"Time of Day","type":"string"},{"label":"Emails","type":"number"}],"rows": [{"c":[{"v":"16"},{"f":"04 PM"},{"v":747}]},{"c":[{"v":" 17"},{"f":"05 PM"},

标签: javascript php jquery ajax google-visualization


【解决方案1】:

如果你使用这种格式...

{"cols":[{"label":"Time of Day","type":"string"},{"label":"Emails","type":"number"}],"r‌​ows":[{"c":[{"v":"16‌​"},{"f":"04 PM"},{"v":747}]},{"c":[{"v":"17"},{"f":"05 PM"}...

那么就可以直接创建数据表了……

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

采用以下格式...

[{v: [8, 0, 0], f: '8 am'}, 1], [{v: [9, 0, 0], f: '9 am'}, 2], [{v: [10, 0, 0], f:'10 am'}, 3],...

您需要首先解析最有可能是字符串的内容,
使用JSON.parse 进入实际数组...

var data = new google.visualization.DataTable();
data.addColumn('string', 'Time of Day');
data.addColumn('number', 'Emails');
data.addRows(JSON.parse(jsonData));

【讨论】:

  • 感谢您的所有努力,但它不起作用。请查看链接我在做什么和出了什么问题,我正在尝试创建一个带有日期和值 pastebin.com/Wdupyq3w 的 Google 图表
  • 你检查过我的 pastebin 看看哪里出错了吗?谢谢
  • 在 pastebin 中,第一个 json 在所有行之间有几个空数组 (,[],),这是行不通的。另一个 json 也是无效的,似乎是一个字符串数组 ([["[{v: [16, 0, 0], f: 04 PM}, 747]"]...)
  • 感谢您的回复,但第二个阵列也无法正常工作。我尝试了各种方法,但没有工作。你能不能写一点 PHP 来创建像 jsfiddle.net/x1rjLsav 这样的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多