2015-05-14 77 views
2

我需要從我從mysql數據庫獲得的數據添加指向。在這個時候,我得到的JSON數據,但我不知道爲什麼在輸出數組中,數據有雙引號(」「)是這樣的:Highcharts用json添加指向折線圖

["{name:'Chip 3',data:[[moment('2015-05-14 13:26:21','HH:mm:ss').valueOf(),29],[moment('2015-05-14 13 
:26:51','HH:mm:ss').valueOf(),29],[moment('2015-05-14 13:27:21','HH:mm:ss').valueOf(),29],[moment('2015-05-14 
13:27:51','HH:mm:ss').valueOf(),29],[moment('2015-05-14 13:28:21','HH:mm:ss').valueOf(),29],[moment('2015-05-14 
14:42:54','HH:mm:ss').valueOf(),32],]}"] 

所以Highcharts無法訪問數據並顯示數據在圖表上。現在我需要刪除數組中的雙引號或者做其他事情來使Highcharts可以對數據進行regconize。

這是我用於獲取和更新系列數據的data.php文件中的代碼。

<?php 

header("Content-type: text/json"); 


include_once 'include/connection.php'; 
$db = new DB_Class(); 



    $query = "select distinct idchip from datatable "; 
    $result = mysql_query($query); 
    $rows = array(); 
    $count = 0; 
    $getall = array(); 
    while($row = mysql_fetch_array($result)) { 

     $table = array(); 

     $query2 = "select datetime,temperature from datatable where idchip=".$row['idchip'].' group by datetime '; 

      $dataresult = mysql_query($query2); 
      while($datarow = mysql_fetch_array($dataresult)) 
      { 

       $data = ''; 


       $datatimes .= $datarow['0'].','; 


       $data .= "[moment('".$datarow['0']."','HH:mm:ss').valueOf(),".(integer)$datarow['1']."],"; 
       $stringdata .= $data; 

       } 

     $newstring = $stringdata ; 

     $stringdata = ''; 
     $stringtime = ''; 

     $namedata = "{name:'Chip ".$row["idchip"]."',data:[$newstring]}"; 
     $getall[] = $namedata; 


    } 


echo json_encode($getall); 
?> 

這是我用來獲取ajax返回數據的代碼。

function getData() { 
     jQuery.ajax({ 
      url: 'data.php', 
      type: 'GET', 
      dataType: 'json', 
      mimeType: 'multipart/form-data', 
      contentType: false, 
      cache: false, 
      processData: false, 
      success: function(data, jqXHR) { 
       if(data == "null") { 

       } else { 
        $.getJSON("data.php", function(json) { 

      chart = new Highcharts.Chart({ 
       chart: { 
       renderTo: 'container', 
       defaultSeriesType: 'spline', 
       events: { 
       //  load: requestData 
       } 
      }, 
series: json 

      }); 
     }); 
       } 
      }, 
      error: function(textStatus) { 
       console.log(" error. damm. "); 
       //console.log(error); 
      } 
     }); 
    } 
+2

問題是您構建在PHP中JSON對象的方式。請查看這[json](http://stackoverflow.com/questions/682260/returning-json-from-php-to-javascript)。您不必創建json字符串。你需要創建最終數組,然後只需使用json_encode($ getall);這將做到 –

+0

@irfanrasool問題是如果我通過json數組添加我不能添加[時刻(...)]或這樣的數組中的一些事情。你能告訴我怎麼做這個請。 –

+0

一般在json中你不能使用函數,因爲不會運行/評估,所以irfan rasool的建議是正確的。 –

回答

0

我認爲像這樣

$query = "select distinct idchip from datatable "; 
    $result = mysql_query($query); 
    $rows = array(); 
    $count = 0; 
    $getall = array(); 
    while($row = mysql_fetch_array($result)) { 

     $table = array(); 
     $stringdata = array(); 
     $query2 = "select datetime,temperature from datatable where idchip=".$row['idchip'].' group by datetime '; 

     $dataresult = mysql_query($query2); 

     $stringdata = array(); 
     while($datarow = mysql_fetch_array($dataresult)) 
     { 
      $stringdata[] = "moment('".$datarow['0']."','HH:mm:ss').valueOf(),".(integer)$datarow['1']; 
     } 

     $namedata['name'] = "Chip ".$row["idchip"]; 
     $namedata['data'] = $stringdata; 
     $getall[] = $namedata; 
    } 

    echo json_encode($getall); 
+0

使用此代碼輸出數據將如下所示:[{「name」:「Chip 3」,「data」:[「moment('2015-05-14 13:26:21','HH:mm :'ss')。valueOf(),29「,」moment('2015-05-14 13:26:51','HH:mm:ss')。valueOf(),29「,}] Highcharts需要如下:[name:「some thing」,data:[moment('date','HH:mm:ss')。valueOf(),'another data']]; - –

+0

然後你必須創建js平面陣列,你將餵給高圖例 –

+0

你能告訴我該怎麼做嗎? –