2017-04-25 61 views
1

我需要創建一個數據表以從數組開始傳遞谷歌圖表:我從PHP中的OpenWeather API中檢索數據,例如溫度,並將溫度數組轉換爲javascript數組。從這個數組我建立數據表使用此代碼:爲谷歌圖表創建一個數據表格陣列

<script type="text/javascript"> 
    var temp=new Array(); 
    <?php 
    for($i=0;$i<count($temperatura);$i++){?> 
    temp[<?php echo $i; ?>]="<?php echo "$temperatura[$i]"; ?>"; 
    <?php 
    }?> 

     google.charts.load('current', {'packages':['line']}); 
     google.charts.setOnLoadCallback(drawChart); 

     function drawChart() { 

     var data2 = new Array(); 

     data2[0] = [ 'Data', 'Temp.' ]; 
     for (i = 0; i < temp.length; i++) { 
       data2[i + 1] = [ '10/04/2017', 'temp[i]' ]; 
     } 


     var data = google.visualization.arrayToDataTable(data2, false); 
     document.write(data); //this cause the message [object Object] 

     var options = { 
     chart: { 
      title: 'Box Office Earnings in First Two Weeks of Opening', 
      subtitle: 'in millions of dollars (USD)' 
     }, 
     width: 900, 
     height: 500, 
     axes: { 
      x: { 
      0: {side: 'top'} 
      } 
     } 
     }; 

     var chart = new google.charts.Line(document.getElementById('chart_div')); 

     chart.draw(data, google.charts.Line.convertOptions(options)); 
     }  
    } 
    </script> 

    <div id="chart_div"></div> 

在我看到消息的翻譯:瀏覽器,我不明白什麼是錯的。可以幫我? 我讀了一些類似的問題,但他們沒有解決我的問題。

+0

它似乎數據表有行:35 ..但是當我嘗試打印圖表datatable爲空,圖形爲空。我怎樣才能打印數據表? –

+0

定位在cicle之後建議的document.write的結果是:[[「Data」,「Temperatura」],[[「2017-04-30 15:00:00」,「17.51」]],[[ 2017-04-30 18:00:00「,」15.34「]],[[」2017-04-30 21:00:00「,」12.55「]],其他值...,[[」2017 -05-04 21:00:00「,」13.3「]]] –

+0

使用document.write(JSON.stringify(data));在var data = ....之後,結果是「{\」cols \「:[{\」label \「:\」Data \「,\」type \「:\」string \「},{\」label \ 「:\」 溫度\ 「\ 」類型\「:\ 」串\「}],\ 」行\「:[{\ 」C:\「:[{\ 」v \「:\」 2017-04 -30 15:00:00 \「},{\」v \「:\」17.51 \「}]},....希望這可以幫助解決我的問題。 –

回答

0

這是我的新代碼:

<script type="text/javascript"> 
    var temp=new Array(); 
    <?php 
    for($i=0;$i<count($temperatura);$i++){?> 
    temp[<?php echo $i; ?>]="<?php echo "$temperatura[$i]"; ?>"; 
    <?php 
    }?> 

    var dataora=new Array(); 
    <?php 
    for($i=0;$i<count($dataora);$i++){ 
    ?> 
     dataora[<?php echo $i; ?>]="<?php echo "$dataora[$i]"; ?>"; 
    <?php 
    }?> 

     google.charts.load('current', {'packages':['line']}); 
     google.charts.setOnLoadCallback(drawChart); 

     function drawChart() { 

     var data2 = new Array(); 

     data2[0] = [ 'Data', 'Temperatura' ]; 
     for (i = 0; i < temp.length; i++) { 
       data2[i + 1] = [ [dataora[i]], [parseFloat(temp[i]) ] ]; 
     } 

     var data = google.visualization.arrayToDataTable(data2, false); 

     document.write(JSON.stringify(data)); 

     console.log(data); 

     var options = { 
       chart: { 
       title: 'Previsioni Temperatura', 
       subtitle: 'in °C' 
      }, 
     width: 1000, 
     height: 500, 
     axes: { 
     } 
     }; 

我檢索openweather結果的日期排列。 在控制檯我有錯誤:

錯誤:沒有定義集裝箱jsapi_compiled_default_module.js:63:448

document.write(JSON.stringify(data)); 

結果是:

"{\"cols\":[{\"label\":\"Data\",\"type\":\"timeofday\"},{\"label  
\":\"Temperatura\",\"type\":\"timeofday\"}],\"rows\":[{\"c\":[{\"v 
\":[\"2017-05-01 15:00:00\"]},{\"v\":[17.35]}]},{\"c\":[{\"v\":[\"2017-05-01 
18:00:00\"]},{\"v\":[15.72]}]},{\"c\":[{\"v\":[\"2017-05-01 21:00:00\"]}, 
{\"v\": [15.32]}]},.....{\"c\":[{\"v\":[\"2017-05-06 12:00:00\"]},{\"v\":  
[17.32]}]}]}" 

我嘗試更多的修改爲cicle,但沒有結果。 建議?