2016-07-29 5 views
0

Mein kopf wird blasen.Highcharts leben daten, json ajax

livedata.php lädt Json, wenn die Seite geöffnet ist. live.php Punkt zum Diagramm hinzufügen.

Von livedata.php bekam ich folgende Ausgabe:

[["Date.UTC(2016, 07-1, 28, 15, 08)",37],["Date.UTC(2016, 07-1, 28, 15, 08)",37],["Date.UTC(2016, 07-1, 28, 15, 08)",37],["Date.UTC(2016, 07-1, 28, 15, 08)",37],["Date.UTC(2016, 07-1, 28, 15, 08)",37],["Date.UTC(2016, 07-1, 28, 15, 08)",37]] 

live.php Ausgang - nur letzte Reihe, sieht aus wie

["Date.UTC('.2016, 07-1, 29, 15, 40.')", 44] 

Ich habe Diagramm bekam, leben addPoint arbeiten, aber kein Datum auf der x-Achse. Was ich falsch mache?

JS

var chart; 

function requestData() { 
    $.ajax({ 
     url: 'live.php', 
     success: function(point) { 
      var series = chart.series[0], 
       shift = series.data.length > 120; // shift if the series is 

       chart.series[0].addPoint(eval(point)); 

       setTimeout(requestData, 10000);  
     }, 
     cache: false 
    }); 
} 
$(function() { 
     $.ajax({ 
     url: 'livedata.php', 
     success: function(point) { 
      chart = new Highcharts.Chart({ 
       chart: { 
        renderTo: 'container', 
        type: 'areaspline', 

        events: { 
       load: requestData 
      } 
       }, 
       title: { 
        text: 'Revenue vs. Overhead', 

       }, 
       subtitle: { 
        text: '', 

       }, 
       xAxis: { 
        type: 'datetime' 


       }, 
       yAxis: { 
        title: { 
         text: 'Amount' 
        }, 
        plotLines: [{ 
         value: 0, 
         width: 1, 
         color: '#808080' 
        }] 
       }, 


       series: [{ 

      name: 'Random data', 
      data: eval(point) 
     }] 
      }); 
     },  

    }); 


}); 

live.php

global $dbConnection; 
    $stmt = $dbConnection->query('SELECT DATE_FORMAT(data,"%Y-%m-%d %H:%i") as dataa, humidity FROM sensorsdata order by id desc limit 1');  
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 
    $date_raw = strftime('%Y, %m-1, %d, %H, %M', strtotime($row[dataa])); 
     $date_complete = "Date.UTC('.$date_raw.')"; 
    $ar = array($date_complete, $row[humidity]); 
    echo json_encode($ar, JSON_NUMERIC_CHECK); 

livedata.php

global $dbConnection; 
$stmt = $dbConnection->query('SELECT DATE_FORMAT(data,"%Y-%m-%d %H:%i") as dataa, humidity FROM sensorsdata');  

$result = $stmt->fetchAll(); 

foreach ($result as $row) { 
    $date_raw = strftime('%Y, %m-1, %d, %H, %M', strtotime($row[dataa])); 
    $date_complete = 'Date.UTC('.$date_raw.')'; 
    $hum_for_chart[] = [$date_complete, $row[humidity]]; 

} 

echo json_encode($hum_for_chart, JSON_NUMERIC_CHECK); 

Chart: Chart

Antwort

0

denke ich sein Problem Ihrer Daten versuchen, wie Zeichenfolge zu machen,

live.php

.... 
$date_complete = "Date.UTC('.$date_raw.')"; 
$ar = "[".$date_complete.",". $row[humidity]."]"; 
echo json_encode($ar); 

livedata.php

.... 
foreach ($result as $row) { 
    $date_raw = strftime('%Y, %m-1, %d, %H, %M', strtotime($row[dataa])); 
    $date_complete = 'Date.UTC('.$date_raw.')'; 
    $hum_for_chart[] = "[".$date_complete.",". $row[humidity]."]"; 
} 
.... 

können Sie verweisen highcharts-data-series-issue-with-ajax-json-and-php

+0

mit Zeichenfolge Typ Ich habe einen Fehler Highcharts Fehler # 12: www.highcharts.com/errors/12 highcharts.js: 286 Uncaught TypeError: h.splice ist keine Funktion –

0

ich es habe! 2 Tage umwerfend))))

Dank Rohan Kumar für Link. Ich habe Änderungen von date.utc in Unix-Zeitstempel vorgenommen.

$datetimeUTC = ((strtotime($row[dataa])+ 10800) * 1000); 
$data[] = [$datetimeUTC, $row[humidity]]; 
echo json_encode($data); 
  • 10800 - das 3 Stunden (Moskau Zeitzone)
  • ist

Der Ausgang ist

[[1469718529000,37],[1469718529000,37],[1469718530000,37],[1469718531000,37]] 

Und das ist es, Datum Achse zu arbeiten begann!