2015-12-23 104 views
0

我有一個MySQL數據庫喂對我的highcharts。它爲pH計提供時間戳和傳感器值。當我加載圖形時,我會看到顯示時間戳和傳感器值的工具提示,但是從數據庫連續提供的工具提示未定義爲我的時間戳,但我創建的數組已將其存儲在那裏。我想盡可能具體。我認爲我錯誤地構建了我的json字符串,這就是爲什麼高層不知道如何處理它。正確的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對。

+0

' 「2015年12月23日12時31分42秒」'是不是一個時間戳。當Highcharts預計'datetime'軸的時間戳爲毫秒時,您正在提供字符串。 –

+0

這是您看到的唯一問題嗎?你能聯繫我一些關於如何使這項工作的文件?如果你的想法是正確的,那麼爲什麼初始加載顯示我以這種不正確的格式提供的時間戳? – VinnyGuitara

回答

0

嘗試使用日期類型:

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

試試這個你X軸:

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

這看起來像是在正確的軌道上,但現在在我的工具提示中,我得到無效的日期。 – VinnyGuitara

+0

你有定義的工具提示xDateFormat嗎?看看這裏:http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/tooltip/xdateformat/ – Jared

+0

此外,你的xAxis定義爲日期時間? xAxis:{ type:'datetime' }, – Jared