【发布时间】:2015-08-20 15:00:41
【问题描述】:
我最近一直在尝试学习使用 Highctarts.js,但遇到了一个小问题。
当我使用他们的示例代码和他们的示例 data.json 文件时,它可以工作。但是,当我用我自己的替换他们的 json 文件时它不起作用,我做错了什么?
Highchart JS
$(document).ready(function() {
var options = {
chart: {
renderTo: 'container',
type: 'spline'
},
series: [{}]
};
$.getJSON('data.json', function(data) {
options.series[0].data = data;
var chart = new Highcharts.Chart(options);
});
});
Highchart data.json
[
[1,12],
[2,5],
[3,18],
[4,13],
[5,7],
[6,4],
[7,9],
[8,10],
[9,15],
[10,22]
]
这会成功生成页面加载图表。
我的代码没有,有什么问题吗?
我的 JS(与上面的 Highchart.js 完全相同,只是替换了 json 文件)
$(document).ready(function() {
var options = {
chart: {
renderTo: 'container',
type: 'spline'
},
series: [{}]
};
$.getJSON('results.json', function(data) {
options.series[0].data = data;
var chart = new Highcharts.Chart(options);
});
});
我的结果.json
[
{
"Month": "January",
"Count": 162690
},
{
"Month": "February",
"Count": 109986
},
{
"Month": "March",
"Count": 145303
},
{
"Month": "April",
"Count": 116949
},
{
"Month": "May",
"Count": 253523
},
{
"Month": "June",
"Count": 51920
}
]
我用来生成 json 的 monthConn.php 页面代码如下 - 也许我没有正确创建 results.json?;
$stmt = $conn -> prepare("SELECT
MONTHNAME(TimeStamp), direction, COUNT(*)
FROM
transactions
WHERE TimeStamp BETWEEN '2014-01-01' AND '2014-12-31'
GROUP BY EXTRACT(MONTH FROM TIMESTAMP);");
$stmt -> execute();
$stmt -> bind_result($month, $count);
while ($stmt -> fetch()) {
$data[] = array(
'Month' => $month,
'Count' => $count
);
}
$stmt->close();
file_put_contents("results.json", json_encode(($data)));
最好是条形图
底部的月份(x 轴)
向左计数(y 轴)
【问题讨论】:
-
这是因为 HC 等待一个数组数组,而您正在发送一个对象数组。如果用php返回json,使用json_decode($json, true);
-
数组数据被视为一组坐标对 [x, y],这就是它在没有任何额外图表配置的情况下工作的原因。如果您想使用其他数据格式,您应该相应地配置图表。换句话说,你的数据没问题,你的图表配置不行。
-
这是我从您的帖子中看到的猜测。也许@IgorDymov 的答案比我的更正确
-
@johnny_s 因为 HighCharts 是非常灵活的工具,我不知道您要达到什么目标。您的图表应该是什么样子?
-
@johnny_s,目前您只有 Out 数据,对吧? (
Direction: O)
标签: javascript jquery json highcharts