Highchart – отображение данных JSON – MYSQL / PHP

Я пытаюсь отобразить JSON DATA в Highchart ( http://highcharts.com )

Проблема заключается в данных для xAxis. Я действительно смущен, как получить формат даты, чтобы он отображался в xAxis.

Я узнал, что мне нужно преобразовать данные даты из БД в миллисекунды.

Кто-то понял, как это понимать?

Это мой javascript:

var chart; chart = new Highcharts.Chart({ chart: { renderTo: 'container', defaultSeriesType: 'spline', events: { load: requestData }}, xAxis: { type: 'datetime' }, yAxis: { title: { text: 'Value' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] }, series: [{ name: 'Random data', data: [] }] }); function requestData() { $.ajax({ url: '../controller/charter/data.php', datatype: "json", success: function(data) { alert(data); chart.series[0].setData(data); }, cache: false }); } 

Это PHP, который создает JSON:

  <?php header("Content-type: text/json"); // connect to the database $dbhost = "localhost"; $dbuser = "cccccc"; $dbpassword = "ccccccc"; $database = "ccccccccc"; $tablename = "ccccccc"; $db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error()); mysql_select_db($database) or die("Error conecting to db."); $result = mysql_query("SELECT COUNT(*) AS count FROM $tablename"); $row = mysql_fetch_array($result,MYSQL_ASSOC); $SQL = "SELECT aed,savedate FROM $tablename ORDER BY savedate"; $result = mysql_query( $SQL ) or die("Couldn?t execute query.".mysql_error()); $i=0; while($row = mysql_fetch_array($result,MYSQL_ASSOC)) { $row[aed] = (int) $row[aed]; $rows[$i]=array($row[savedate],$row[aed]); $i++; } echo json_encode($rows); ; ?> 

Данные JSON:

 [["2011-03-20 18:53:47",40],["2011-03-21 18:53:47",300],["2011-03-22 18:53:47",450],["2011-03-23 18:53:47",40],["2011-03-24 18:53:47",300],["2011-03-25 18:53:47",450],["2011-03-26 18:53:47",40],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",100],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",100],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",100],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",100]] 

Сначала попробуйте проанализировать данные (JSON), прежде чем передавать их в качестве аргумента setData

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

Обновить:

 [["2011-03-20 18:53:47",40],["2011-03-21 18:53:47",300],...] 

"2011-03-20 18:53:47" не является допустимым значением x для серии datetime. Это должно быть число, которое представляет собой дату в миллисекундах.

Вы можете исправить это, изменив одно из следующих действий:

  1. Javascript (клиентская сторона).
  2. В вашем PHP-коде
  3. В вашем SQL-запросе.

Сделайте это либо в своем SQL-запросе, либо в PHP, так что вам не придется возиться с Javascript и что ваш JSON будет выглядеть примерно так:

 [[1318605385652, 40],[1318605385652,300],...] 

Затем после этого просто сделайте eval .