2015-10-04 53 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