在html页面中使用Ajax加载Google Chart Api

时间:2012-10-05 07:33:26

标签: html ajax google-visualization

我使用Ajax代码加载html页面

例如:

  $.ajax({
  url: 'Context.html',
  dataType: 'html',
  timeout: 500, 
  success: function(html) {
  $("div#mainbody").html(html);
  }
  });

Context.html我将其加载到其他一些html页面中,如Home.html

但我在Context.html中使用google API生成饼图

和生成饼图的代码,即在Context.html中是

<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 = google.visualization.arrayToDataTable([
      ['Year', 'Count'],
      ['2005',  70],
      ['2006',  80],
      ['2007',  140],
      ['2008',  220],
      ['2009',  290],
      ['2010',  400],
      ['2011',  500]
    ]);

    var options = {
      title: 'Head Count-(Apple Year)',
      colors:['#129212']              
      };
 var chart = new google.visualization.ColumnChart(document.getElementById('jsf_headcount_bargraph'));
   chart.draw(data, options);
    }
  </script> 

当我在Home.html页面中加载Context.html时,在Home.html中加载它后,我无法找到Context.html中的饼图

我试过给ALERT(“”);在脚本中,我为饼图编写代码。我收到了警告消息,因此Ajax正在执行javascript,但我没有获得相同脚本的饼图。所以我在Home.html页面中加载饼图

2 个答案:

答案 0 :(得分:0)

如果你像这样使用Context.html

<script>
var j = 20;
alert();
</script>

然后我收到警告(使用$ .ajax({success:function(){}})等。)

[例子]

function execAjax() {
    $.ajax( {
        url: 'index2.html',
        success: function( html ) {
            $("#content").html( html );

            checkJSvalue();
        },
        error: function() {
            alert( "Error" );
        }
    });
}

function checkJSvalue() {

    alert( j );
}

示例HTML(index2.html)

<div>
content of index2.html
</div>
<script>
var j = 20;
alert();
</script>

我试图将代码直接放在'home.html'中,但我已经遇到了错误。无论如何,您应该颠倒使用顺序和绘图功能的声明。

// Bad
// google.setOnLoadCallback(drawChart);
// function drawChart() {}

// Good
function drawChart() {}
google.setOnLoadCallback(drawChart);


除此之外,我已经从google.jsapi.js(本地复制)

中收到此错误
Uncaught Error: Container is not defined format+nl,default,corechart.I.js:841

那里出了问题,这不是实际问题的一部分,而是缩小等等,所以我不会去那里。

希望这有用:)

答案 1 :(得分:0)

如果我替换代码

,一切正常
google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);

内嵌

google.load('visualization', '1.0', {'packages':['corechart'], "callback": drawChart});