【问题标题】:Loading Google Visualisations via Ajax通过 Ajax 加载 Google 可视化
【发布时间】:2010-04-08 21:06:35
【问题描述】:

我的应用程序中有几个选项卡,每个选项卡通过 jQuery load() 函数加载不同的子页面。

我的问题是某些页面包含谷歌可视化插件,这些将不起作用。

我的第一种方法是在子页面中加载 Visualization API 的 JavaScript,但这不起作用 - 从 apis.google.com 加载内容时页面会变为空白并卡住

我的第二种方法是在应该进行可视化的地方插入一个 div,然后调用一个脚本(我之前定义的)来填充这个 div。

这是生成可视化的脚本:

google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.setOnLoadCallback(drawChart);

function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('datetime', 'Date');
  data.addColumn('number', 'Temperature');
  data.addColumn('number', 'Humidity');

  data.addRows([
     <?php echo /* raw data outputted by generating functions */ ?>
    ]);


  var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('visualization_div'));
  chart.draw(data, {
    displayAnnotations: true, 
    'scaleColumns': [0,1], 
'scaleType': 'allmaximized',
'displayZoomButtons': false
  });
}

这是我用来调用上述脚本的脚本(单击选项卡时)。

$('#loadarea').load('tab1.php');
drawChart();

另外,这可能是相关的:在文档的开头,我使用jQuery在页面上预加载了一些其他空间:

$(document).ready(function() {
  $('#side-display').load('info.php', {id:<?php echo $id ?>, mode:1});
});

谢谢,

【问题讨论】:

    标签: javascript jquery google-api google-visualization


    【解决方案1】:

    这有两个问题:

    1. google.setOnLoadCallback(drawChart) 正在调用该函数,所以我摆脱了它。

    2. 脚本在加载之前试图填充div,所以我在标签更改脚本中添加了对drawChart()的函数调用:

      $('#loadarea').load('tab1.php', function() { drawChart(); });

    现在可以了。

    【讨论】:

    • 这是一个非常好的答案。我已经解决了其他问题的答案有更多的选票,但是这个简单的问题让它起作用了。谢谢。
    猜你喜欢
    • 2011-03-22
    • 2012-04-21
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多