【问题标题】:Proper JSON format for highchartshighcharts 的正确 JSON 格式
【发布时间】:2015-12-23 17:35:10
【问题描述】:

我有一个 mysql db 为我的 highcharts 提供对。它为 pH 计提供时间戳和传感器值。当我加载图表时,我得到了显示时间戳和传感器值的工具提示,但是当它从数据库连续提供时,工具提示显示未定义为我的时间戳,但我构建的数组在那里。我想尽可能具体。我认为我错误地构建了我的 json 字符串,这就是为什么 highcharts 不知道如何处理它。

这是我对 php 页面的回调:

events: {
    load: function() {
        var chart = this;
        var series = this.series[0];
        setInterval(function() {                                    
            $.getJSON("php/dataPhIncremental.php", function(data) {
                // Only add data points if the latest date in the DB is different
                if (!(chart.yAxis[0].dataMax == data[0].data[0])) {
                    $(chart.series).each(function(i, series) {
                        console.log(data[0]);
                        series.addPoint([data[0].timestamp[0], data[0].data[0]]);

                    }); 
                } 
                else {
                    console.log("did not write point"+ oldPoint + "   " + data[0].data);
                }
            })
        }, 1000);
    }

认为 getJSON 会转到 php 页面并获取 json 字符串,然后让 highcharts 做它想做的事情。我错了。

我的 php json 返回对象示例:

[{"name":"pH","data":[4.76],"timestamp":["2015-12-23 12:31:42"]}]

这是用于增量回调。初始字符串包含 10 对。

【问题讨论】:

  • "2015-12-23 12:31:42" 不是时间戳。当 Highcharts 期望 datetime 轴的时间戳以毫秒为单位时,您正在提供字符串。
  • 这是您看到的唯一问题吗?您能否将我链接到有关如何使其正常工作的一些文档?如果您的想法是正确的,那么为什么初始加载会显示我以这种不正确格式提供的时间戳?

标签: javascript php json highcharts


【解决方案1】:

尝试使用日期类型:

                    console.log(data[0]);
                    d = new Date(data[0].timestamp[0]);
                    series.addPoint(d, data[0].data[0]);

为您的 xAxis 试试这个:

xAxis: {
  type: 'datetime',
  labels: {
    formatter: function() {
      return Highcharts.dateFormat('%e %b', this.value*1000); // milliseconds not seconds
    },
  }
}

【讨论】:

  • 这似乎是在正确的轨道上,但现在在我的工具提示中我得到了无效的日期。
  • 您是否定义了工具提示 xDateFormat ?看这里:jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/…
  • 另外,您的 xAxis 是否定义为日期时间? xAxis: { type: 'datetime' },
  • 好的,所以我认为在我的工具提示代码中,我已将其定义为初始加载的 json 返回字符串的一部分。 ` xAxis: { type: 'datetime' }, yAxis: { min: 0, title: { text: null } }, tooltip: { xDateFormat: '%Y-%m-%d', formatter: function() { console .log(json); return ''+ this.series.name +'
    '+ new Date(json[0].timestamp[this.x]) +': '+ this.y; } }` 我如何编写它以便它使用初始负载然后使用新点?
  • 您是说在初始加载后加载的附加点具有不同格式的工具提示?
猜你喜欢
  • 2013-02-02
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多