Flot.js与PHP和MySQL不兼容的时间

时间:2014-11-28 11:15:06

标签: php flot

我有一个系统试图使用flot js显示一个计数的图表。我遇到的问题是图形实际上并不呈现任何行。我按照其他帖子的建议将时间转换为UTC并乘以1000,但无济于事。有谁知道我做错了什么?

PHP:

public function liveGraphAjax()
{   
    $query = "SELECT
                time as time,
                COUNT( id ) as count
            FROM table
            WHERE HOUR( TIME ) = HOUR( CURRENT_TIME ) -1
            GROUP BY DATE_FORMAT(`time`, '%H:%i')";
    $result = DB::select($query);       

    if(isset($result))
    {           
        $temp = array();
        foreach ($resultas $row )
         {  
            $temp [] = array(
                        'time' =>strtotime($row->time) * 1000,
                        'count' =>(int) $row->count,
                        );      
        }                   
    }

    return Response::json($temp);
}

JS:

var options = {
  colors : [$UpdatingChartColors],

  xaxis: {
         mode: "time", 
         timeformat:"%hh:%mm" 
  },
  series: {
           lines: { show: true },
           points: { show: true }
       },     
};

$("button.dataUpdate").click(function ()
{
  data = [];     

  $.plot("#updating-chart", data, options);

  function fetchData() 
  {

    function onDataReceived(series) 
    {
      var res = [];
      data = [series];

      for (var i = 0; i < data[0].length; ++i) 
      {
        res.push([data[0][i].time,data[0][i].count]);
      }

      console.log(res);
      $.plot("#updating-chart", res, options);
    }

    $.ajax({
      url: "liveGraphAjax",
      type: "GET",
      dataType: "json",
      success: onDataReceived
    });

  }

});

1 个答案:

答案 0 :(得分:1)

  1. 永远不会调用fetchData()函数,因此您永远无法获取数据。
  2. onDataReceived()函数中,res变量只包含一个数据系列。您必须将通话更改为$.plot("#updating-chart", [res], options);