Boa*_*rdy 4 javascript charts json google-visualization
java我正在尝试使用Google Chart API创建折线图.我试图通过AJAX帖子使用JSON为数据表设置数据.
我有一个为饼图工作的版本,但我无法找到如何为折线图做.
以下是我使用ajax帖子创建图表的方法.
function drawLineGraph()
{
$.post("loadGraph.php",
{
type: "line"
},
function (result)
{
var data = new google.visualization.DataTable(result);
var options = {
title: "Line Graph Test"
};
var chart = new google.visualization.LineChart(document.getElementById("lineChart"));
chart.draw(data, options);
}, "json"
);
}
Run Code Online (Sandbox Code Playgroud)
下面是loadGraph.php的代码
print json_encode(test());
function test()
{
$array = array();
if ($_POST['type'] == "line")
{
$array['cols'][] = array('type' => 'string');
$array['cols'][] = array('type' => 'number');
$temp = array();
$array['row'][] = array('v' => (string) "20-01-13");
$array['row'][] = array('v' => (int) 35);
$array['row'][] = array('v' => (string) "21-01-13");
$array['row'][] = array('v' => (int) 30);
}
}
Run Code Online (Sandbox Code Playgroud)
虽然没有出现错误,但是折线图显示的类似,但没有线,就像数据是0.下面是图表显示方式的屏幕截图

以下是JSON内容的输出.
{"cols":[{"type":"string"},{"type":"number"}],"row":[{"c":[{"v":"20-01-13"},{"v":22}]},{"c":[{"v":"21-01-13"},{"v":24}]},{"c":[{"v":"22-01-13"},{"v":27}]}]}
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助,您可以提供.
更新 我试图做@davidkonrad建议但我现在遇到了另一个问题.我已经将PHP数组的行定义更改为行,如下所示:
$array['cols'][] = array('type' => 'string');
$array['cols'][] = array('type' => 'number');
$array['rows'][] = array('c' => "20-01-13");
$array['rows'][] = array('v' => 35);
$array['rows'][] = array('c' => "21-01-13");
$array['rows'][] = array('v' => 30);
Run Code Online (Sandbox Code Playgroud)
但现在当图表加载时,我得到Cannot read property '0' of undefined图表应该显示的位置.
下面是如何生成JSON
{"cols":[{"type":"string"},{"type":"number"}],"rows":[{"c":"20-01-13"},{"v":35},{"c":"21-01-13"},{"v":30}]}
Run Code Online (Sandbox Code Playgroud)
我无法看到如何更改数组以使其与davidkonrad提供的JSON匹配
dav*_*rad 11
问题是一个非常小的错字.在JSON中,row应该是rows.
例如,将示例JSON更改为
var result = { "cols":[ {"type":"string"}, {"type":"number"}], "rows":[ {"c":[{"v":"20-01-13"}, {"v":22}]}, {"c":[{"v":"21-01-13"}, {"v":24}]}, {"c":[{"v":"22-01-13"}, {"v":27}]} ]};
Run Code Online (Sandbox Code Playgroud)
并且您的代码有效:

更新
查看构造函数的JavaScript Literal数据的格式参数 您需要将每个"c"部分包装到括号中,并且还要错过第一列的"v"(值指示符).
您更新的测试JSON是
"cols": [
{"type":"string"},{"type":"number"}
],
"rows":[
{"c":"20-01-13"},{"v":35},
{"c":"21-01-13"},{"v":30}
]
}
Run Code Online (Sandbox Code Playgroud)
给出"不能读取未定义的0",因为它应该是
{
"cols":[
{"type":"string"},{"type":"number"}
],
"rows":[
{"c": [{ "v": "20-01-13"},{"v":35} ]},
{"c": [{ "v": "21-01-13"},{"v":30} ]}
]
}
Run Code Online (Sandbox Code Playgroud)
图:

希望能帮助到你!
绝对最后的更新
修改了PHP以及json_encode正确的谷歌图表格式的输出数据:
function test() {
$array = array();
$array['cols'][] = array('type' => 'string');
$array['cols'][] = array('type' => 'number');
//HERE you have the difference
$array['rows'][]['c'] = array(
array('v' => "20-01-13"),
array('v' => 35)
);
$array['rows'][]['c'] = array(
array('v' => "21-01-13"),
array('v' => 30)
);
return json_encode($array);
}
Run Code Online (Sandbox Code Playgroud)
输出
{"cols":[{"type":"string"},{"type":"number"}],"rows":[{"c":[{"v":"20-01-13"},{"v":35}]},{"c":[{"v":"21-01-13"},{"v":30}]}]}
Run Code Online (Sandbox Code Playgroud)
这导致上面的图表
| 归档时间: |
|
| 查看次数: |
20154 次 |
| 最近记录: |