java - 如何使用 AJAX 查询动态填充 Google Chart,获取 DOM 异常 8

标签 java ajax json google-visualization playframework-1.x

我有一个 Controller ,它以 Google Charts 期望的格式返回(良好)格式化的 JSON。我可以通过导航到 http://localhost:9000/manager/echoVariables 查看输出,操作如下:[["foo",3],["foo", 3]]

我想要进行 AJAX 调用,但无法将此 JSON 传递到 Google Charts。我可以确认 JSON 已被接收,我在 Chrome 浏览器检查器的网络选项卡中进行了验证。

但是我在将此 JSON 字符串传递到 Google Charts 的过程中遇到了 DOM 异常 8

这是创建图表的 View :

#{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>

如何使饼图显示我的值,而不是代码片段中给出的值?

谢谢。

最佳答案

您的代码有两个问题。首先,您在 #result div 上使用 jQuery 的 html() 函数,但您传递的是 javascript 对象,而不是函数期望的字符串。如果您只想查看数据,则可以将其更改为类似

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

当然,另一个问题是您实际上并未将结果数据传递给 google 图表 API。为此,您需要使用从 AJAX 调用返回的数据(而不是示例中的数据)来调用 chart.draw

关于java - 如何使用 AJAX 查询动态填充 Google Chart,获取 DOM 异常 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15117525/

相关文章:

java - 建议使用 Spring Integration Java DSL 进行失败转换的正确方法是什么

javascript - 使用 Jquery 显示来自 Ajax 响应的数据

ios - 如何解码json数据的url?

javascript - 为什么 d3 行适用于一个 js 对象,但不适用于另一 js 对象?

html - 将 JSON 链接到 html 以使用 particles.js 不起作用

java - 如何使用 java 运行时将密码输入 sudo?

java - PowerMock的mockStatic()覆盖X.class.y()方法

java - 如何启用 <aop :aspectj-autoproxy> with java-based annotations

javascript - Ajax 响应没有改变我的 View 模型

php - 为 WooCommerce 中的特定结账字段启用更新结账