【问题标题】:Highcharts displays series names but missing data points from json sourceHighcharts 显示系列名称但缺少来自 json 源的数据点
【发布时间】:2025-12-24 16:45:17
【问题描述】:

我正在使用带有 JSON 数据的 Highcharts 来呈现标准折线图,但在显示系列数据时遇到了一些问题。图表框架和系列名称出现在页面上,所有内容都在控制台中检查,所以我知道它已成功获取数据。

当我运行 JSONLint 时,JSON 输出似乎有效,所以我有点困惑为什么这个图表不能正确呈现。

这是我的图表JAVASCRIPT 代码

$(document).ready(function() {
        var options = {
            chart: {
                renderTo: 'container',
                type: 'line',
                zoomType: "x" 
            },
            xAxis: {
                type: 'datetime',
                tickInterval:  7 * 24 * 3600 * 1000,
                labels: {
                    format: '{value:%b %e, %Y}',
                    rotation: -45
                },
            },
            yAxis: {
                allowDecimals: true,
                title: {
                    text: '$US'
                }
            },
            tooltip: {
                xDateFormat: '%b %e, %Y',
            },

            series: []
        }

        $.getJSON("mdb_ajax.php", function(json) {
            options.series = new Array();
            for(i=0;i< json.length;i++) {
                options.series.push(json[i]);
            }
            var chart = new Highcharts.Chart(options);
        });
    });

这是对应的PHP FILE

$price_output = $prices->getPrices($filter_option);

    foreach($price_output as $category => $price)
    {
        $arr[] = array('name' => $category, 'data' => $price);
    }

print json_encode($arr);

如您所见,我已经为对象添加“名称”和“数据”键以帮助 Highcharts,但该对象在没有这些额外工作的情况下会生成完全有效的 JSON(它只是不会显示任何内容)方式)。

这是 JSON DATA 的示例:

[
  {
    "name": "CTGY1",
    "data": {
        "1414998000000": "6.2400",
        "1415084400000": "-3.1110",
        "1415170800000": "1.5090",
        "1415257200000": "4.2390",
        "1415343600000": "1.6990",
        "1426140000000": "5.9100"
    },
    {
    "name": "CTGY2",
    "data": {
        "1414998000000": "7.7890",
        "1415084400000": "-0.7610",
        "1415170800000": "1.1600",
        "1415257200000": "5.3300",
        "1415343600000": "1.9290",
        "1415602800000": "-0.8260"
  }
]

我猜在处理获取的 JSON 数据时需要对键值进行一些定义,我只是不确定此时会是什么样子。有任何关于最佳方式的想法吗?

【问题讨论】:

    标签: javascript php jquery json highcharts


    【解决方案1】:

    data 应该是一个数组,在你的情况下 Y 值不应该是字符串: data: [[1415602800000,-0.8260],[],...]

    这里是dataseries 中可接受的数据结构 http://api.highcharts.com/highcharts#series.data

    Highcharts API 也提供了几个例子:

    http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/series/data-array-of-arrays/

    【讨论】:

    • 谢谢,这两个问题我都修改了,数据出现了。作为旁注,我使用 JSON_NUMERIC_CHECK 强制转换为数字与字符串,但这在 PHP
    最近更新 更多