1

Google Chart API を使用して単純な面グラフをレンダリングする次のコードがありますが、AJAX 呼び出し (Python バックエンド) で動作させることができません。呼び出しからの戻り値 (統計) は次のとおりです。

[
  ['2012-09-17',1000,400],
  ['2012-09-18',1170,460],
  ['2012-09-19',660,1120],
  ['2012-09-20',1030,540]
] 

私が得ているエラーは次のとおりです。

Uncaught Error: Argument given to addRows must be either a number or an array 

間違っていると目立つものはありますか?JavaScriptオブジェクトの問題だと感じていますが、ここからどこに進むべきかわかりません。ありがとう!

以下は HTML/javascript です。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);

  function drawChart() {
    var data = new google.visualization.DataTable();
      data.addColumn('string', 'Year');
      data.addColumn('number', 'Quantity');
      data.addColumn('number', 'Sales');

      var options = {
        title: 'Company Performance',
        hAxis: {title: 'Year', titleTextStyle: {color: 'red'}},
        legend: {position: 'in'},
      };

      $.ajax({
        type: 'POST',
        url: "/loaddata",
        success: function(stats) {
          var vals = stats;
          data.addRows(vals); 
          var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
          chart.draw(data, options);         
        },
      });  
  }

</script>
</head>

<body>
     <div id="chart_div" style="width: 800px; height: 450px;"></div>
</body>

</html>
4

1 に答える 1

1

Python スクリプトの JSON データ全体を Javascript 変数に直接関連付けることにより、この Google の例と同じ方法で行うようにアドバイスすることしかできません。

var jsonData = $.ajax({
                    url: "/loaddata",
                    dataType:"json",
                    async: false
               }).responseText;
于 2012-12-18T19:11:21.847 に答える