0

Google Chartsが期待する形式で(適切に)フォーマットされたJSONを返すコントローラーがあります。に移動して出力を表示できますhttp://localhost:9000/manager/echoVariables。OPは次のとおりです。[["foo",3],["foo",3]]

AJAX呼び出しを実行したいのですが、このJSONをGoogleChartsに渡すことができません。JSONが受信されていることを確認できます。Chromeのブラウザインスペクターの[ネットワーク]タブで確認しました。

しかし、私はDOM Exception 8このJSON文字列をGoogleChartsに渡す途中です。

これは、グラフを作成しているビューです。

#{extends 'main.html' /} #{set title:'Home' /} #{set 'moreScripts'}
#{/set}
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

      // Load the Visualization API and the piechart package.
      google.load('visualization', '1.0', {'packages':['corechart']});

      // Set a callback to run when the Google Visualization API is loaded.
      google.setOnLoadCallback(drawChart);

      // Callback that creates and populates a data table,
      // instantiates the pie chart, passes in the data and
      // draws it.
      function drawChart() {

        // Create the data table.
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Topping');
        data.addColumn('number', 'Slices');
        data.addRows([
          ['Mushrooms', 3],
          ['Onions', 1],
          ['Olives', 1],
          ['Zucchini', 1],
          ['Pepperoni', 2]
        ]);

        // Set chart options
        var options = {'title':'How Much Pizza I Ate Last Night',
                       'width':400,
                       'height':300};

        // Instantiate and draw our chart, passing in some options.
        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>

<script type="text/javascript">
//$.get()
$(document).ready(function() {
    $("#result").html();
    $.get(
        '/manager/echoVariables',
        {var1: "foo", var2: 5},
        function(responseText){
            $("#result").html(responseText);
        },
        "json"
    );
});


</script>

<body>
    <!--Div that will hold the pie chart-->
    <div id="chart_div"></div>
    <div id="result"></div>
</body>

スニペットで指定された値ではなく、円グラフに自分の値を表示させるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

1

コードには2つの問題があります。まず、divでjQueryのhtml()関数を使用して#resultいますが、関数が期待するような文字列の代わりにjavascriptオブジェクトを渡しています。データを表示したいだけの場合は、次のように変更します。

$.get(
    '/manager/echoVariables',
    {var1: "foo", var2: 5},
    function(responseText){
        $("#result").html(JSON.stringify(responseText));
    },
    "json"
);

もちろん、もう1つの問題は、結果データを実際にgooglechartAPIに渡していないことです。chart.drawそのためには、例のデータではなく、AJAX呼び出しから取得したデータを使用して呼び出す必要があります。

于 2013-02-27T16:57:47.950 に答える