javascript - Rails 3.1 Ajax 部分中的 Google Charts

标签 javascript jquery ajax ruby-on-rails-3.1 google-visualization

我一直在使用 Google 图表,没有遇到任何问题,但现在我需要在 Ajax 呈现的部分中显示图表。

显然什么都没有显示。我知道这与构建未激活图表的 Java 触发器有关,但我需要一些帮助来确定我需要做什么...

目前我有这样的东西(非 Ajax):

 <html>
  <head>
    <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', 'Sales');
        data.addColumn('number', 'Expenses');
        data.addRows([
          ['2004', 1000, 400],
          ['2005', 1170, 460],
          ['2006', 660, 1120],
          ['2007', 1030, 540]
        ]);

        var options = {
          width: 400, height: 240,
          title: 'Company Performance',
          vAxis: {title: 'Year',  titleTextStyle: {color: 'red'}}
        };

        var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div"></div>
  </body>
</html>

最佳答案

在您的主页中保留这些(无需加载部分谷歌图表):

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
</script>

在您的部分中,您需要执行如下操作(假设您使用 jQuery)。重点是在加载 dom 之后执行 js 代码,这就是 $(function() {....}) 所做的:

<div id="chart_div"></div>
<script type="text/javascript">
  $(function() {
    drawChart();
  });

  function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Year');
    data.addColumn('number', 'Sales');
    data.addColumn('number', 'Expenses');
    data.addRows([
      ['2004', 1000, 400],
      ['2005', 1170, 460],
      ['2006', 660, 1120],
      ['2007', 1030, 540]
    ]);

    var options = {
      width: 400, height: 240,
      title: 'Company Performance',
      vAxis: {title: 'Year',  titleTextStyle: {color: 'red'}}
    };

    var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }
</script>

使用像 jQuery 这样的库将为您节省许多小时的浏览器不一致时间,以便了解 dom 何时正确加载。

关于javascript - Rails 3.1 Ajax 部分中的 Google Charts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8927722/

相关文章:

javascript - 如何在不重新索引数组键的情况下在 JQuery 中添加和删除数组

javascript - 无法更改框架集 Asp.net c# 中的 css 类

php - 服务器端集群?

javascript - ASP.NET 转换为完全基于 AJAX 的应用程序

javascript - 每秒轮换数组

javascript - 正则表达式获取倒数第四个字符

javascript - 使用 jquery 将项目附加到选择框,同时转义引号

java - 如何让 Spring 3.2 的 ConversionService 和 HttpMessageConverters 一起为 @RequestBody 注解工作?

javascript - JQuery 菜单触发内容

javascript - 国际统计短信字符