使用 JSON 将数据从 PHP 数组传递到 Highcharts 图表

Posted

技术标签:

【中文标题】使用 JSON 将数据从 PHP 数组传递到 Highcharts 图表【英文标题】:Passing data from PHP array to Highcharts chart with JSON 【发布时间】:2018-11-16 17:02:19 【问题描述】:

我正在尝试绘制来自我正在使用 getdata.php?id=allTemp 查询的 sql 数据库的 highcharts 图表。我对 JSON 不太了解,但到目前为止我已经组装了下面的代码,而且图表甚至没有绘制。 $.getJSON 函数在我获得单个变量(例如 weather.wesleyweisenberger.com/getdata.php?id=humanity)时起作用,但是一旦我尝试获取 getdata.php?id=allTemp 它就不起作用,请帮忙我……

while($data = $result->fetch_assoc())
                        echo json_encode($data, JSON_FORCE_OBJECT);
                    

并且返回格式为

"timestamp":"2018-05-30 00:33:05","temperature":"67.39","humidity":"66.57","pressure":"99.21""timestamp":"2018-05-30 00:47:39","temperature":"65.52","humidity":"70.41","pressure":"99.2"...

我的 index.php 文件内容如下:

<script>
        $(function()
            $.getJSON('getdata.php?id=allTemp', function(json)
                $('#container').highcharts(
                    series: [
                        data: json
                    ],
                    title: 
                        text: 'Title'
                    
                )
            )
        )
    </script>
    <div id="container" style="width:100%; height:400px;"></div>

【问题讨论】:

那是无效的 json。将所有 $data 推送到一个数组,并在最后回显该数组编码。 【参考方案1】:
.........

这是一个无效的 json 模式。你得到这个是因为你正在回显多个 json 对象,其中响应需要一个。您只需回显一次即可纠正此问题。

$results = array();
while($data = $result->fetch_assoc())
    array_push($results, $data);

echo json_encode($results);

【讨论】:

【参考方案2】:

Highchart 使用数组来填充其数据,而您只是并排返回大量对象,没有实际可接受的格式,现在使用下面的代码,您将打印一个字符串化的对象数组。

在你的 PHP 上试试这个:

var $stringToReturn = [];

while($data = $result->fetch_assoc())
  push($stringToReturn, $data);


echo json_encode($stringToReturn);

【讨论】:

这很棒!您知道如何将 json 数组的不同部分分配给 highcharts 中的每个轴,例如将时间戳分配给 xAxis 并将温度分配给 yAxis? 是的,请查看 Highcharts 文档,其中也包含大量示例:highcharts.com/docs/chart-concepts/axes

以上是关于使用 JSON 将数据从 PHP 数组传递到 Highcharts 图表的主要内容,如果未能解决你的问题,请参考以下文章

php 二维数组传递给 js 问题解决记录

通过 POST 将 JSON 编码的变量从 PHP 传递到 Javascript

如何将 latin1 字符集关联数组从 php 传递到 javascript?

从 PHP 查询中获取 JSON 数组后,使用 javascript 将 JSON 数组写入 html 页面

将 JSON 从 php 传递到 javascript

将数据数组从表单传递到 ajax 到 PHP 发布文件