highcharts将ajax / json数据放在1970年

时间:2014-03-23 18:35:28

标签: javascript php ajax json highcharts

我正在尝试让ajax请求返回datetime数组,然后将该数据放入highcharts中。我将数据作为json数组返回:

[[1395489600000,29.010971409934],[1395493200000,29.234899961948],[1395496800000,29.712949994206],[1395500400000,29.975449994206],[1395504000000,29.656849956512],[1395507600000,28.24099997282],[1395511200000,27.234581782601],[1395514800000,26.778649961948],[1395518400000,25.775299978256],[1395522000000,25.269349956512],[1395525600000,24.856550049782],[1395529200000,24.219200181961],[1395532800000,24.15609107451],[1395536400000,24.519350206852],[1395540000000,25.194349956512],[1395543600000,25.062799978256],[1395547200000,24.950599956512],[1395550800000,24.575600242615],[1395554400000,23.994500303268],[1395558000000,24.452763795853],[1395561600000,26.619349956512],[1395565200000,29.037949976325],[1395568800000,33.930950012803],[1395572400000,40.999399828911],[1395576000000,45.387049818039]]

图表将呈现,但上面的数据没有显示,图表导航器一直追溯到1970年,并在1月1日上午12点显示一个点,值为0.0。至少可以说,我很难过。代码

PHP:

$ret = array();
//SQL query here
while ($row = mysql_fetch_array($result))
{
extract($row);
$datatime1 = strtotime($datatime)*1000;
$ret[] = array($datatime1, $value*1.0);
}
mysql_close($db);
echo json_encode($ret);

的javascript:

$.ajax({
    url:'/php/TempHist3.php',
    method: 'GET', // or GET
    datatype: "json",
    success: function(data) {
   var chart = $('#container').highcharts();
   $("#hiddendiv").html(data);
   chart.series[0].setData(data);
 },
    error: function(data){
        $("#hiddendiv").html("yousuck");
    }
    });

1 个答案:

答案 0 :(得分:0)

我不确定为什么这会起作用,从它的声音我做了一些邪恶的事情......但

改变这个:

      chart.series[0].setData(data);

到此:

      chart.series[0].setData(eval( '(' + data + ')' ));

工作!

理想情况下,有一种方法不使用eval,但我在这里发布的这种方法似乎是通过简单地将时间作为unix * 1000时间戳发送到而不是尝试解析来将日期时间信息转换为高级图表的最简单方法到客户端的Date.UTC()函数。