2015-10-04 103 views
1

我使用Highcharts創建了具有2個y軸的折線圖。下面是我如何建立我的JSON陣列從一個MySQL查詢:從2個y軸的Highcharts圖表中提取JSON數組的數據系列

$series1 = array(); 
$series1['name'] = 'V'; 
$series2 = array(); 
$series2['name'] = 'Speed'; 
while($row = $selectQueryResult1->fetch()) 
{ 
    $dateTimer1 = ($row['dateTimer']+$timeAdd)*1000; 

    $series1['data'][] = array($dateTimer1,$row['v1']); 
    $series2['data'][] = array($dateTimer1,$row['speed']); 
} 
$result = array(); 
array_push($result,$series1); 
array_push($result,$series2); 
echo json_encode($result, JSON_NUMERIC_CHECK); 

這裏是我如何調用PHP腳本中的jQuery:

$.post('getData.php', {b: begin,e: end}, function(data){ 

} 

我現在的問題是如何提取V數據和Speed數據分成兩個變量,因爲我需要將它們作爲兩個數據序列傳遞給圖表,例如我嘗試過data[0]等。似乎沒有任何工作。

///chart.series[0].setData(eval(vData)); 
///chart.series[0].setData(eval(speedData)); 
+0

JSON在輸出中的外觀如何? –

回答

1

您可能要添加json爲您$.post的第四個參數,以獲得JSON解析爲一個對象,這裏更多的信息:jQuery.post()

$.post('getData.php', {b: begin,e: end}, function(data){ 

}, 'json'); 

閱讀你的代碼告訴我們您的數據的結構如下:

Array (
    [0] => Array 
     (
      [name] => V 
      [data] => Array 
       (
        [0] => Array 
         (
          [0] => value of $dateTimer1 
          [1] => value of $row['v1'] 

因此,數據系列有:

  • data[0][data]V
  • data[1][data] for Speed

因此:

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

當有關的結構疑問,只需把它打印出來:

+0

他的spenibus我喜歡這個數據= JSON.parse(data); \t \t \t \t \t \t \t \t \t \t \t \t的console.log(數據[0] .data1); \t \t \t \t \t \t \t \t \t \t \t \t chart.series [0] .setData(EVAL(數據[0] .data1)); \t \t \t \t \t \t \t \t \t \t \t chart.series [1] .setData(EVAL(數據[1] .data1));你的意見是什麼? – user5313398

+0

@ user5313398顯然'console.log'輸出到控制檯,所以你應該看看那裏。它應該顯示對象,甚至是可以探索的。至少在Firefox和Chrome中使用CTRL + SHIFT + J。 – spenibus

+0

@ user5313398當您在'$ .post'中設置'json'時,不需要在數據中使用'eval'。它已準備好用作數組或對象。我更新了答案。 – spenibus