Gor*_*oro 1 javascript jquery google-api google-visualization
我的应用程序中有几个选项卡,每个选项卡通过 jQuery load() 函数加载不同的子页面。
我的问题是某些页面包含 Google 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
});
}
Run Code Online (Sandbox Code Playgroud)
这是我用来调用上述脚本的脚本(当单击选项卡时)。
$('#loadarea').load('tab1.php');
drawChart();
Run Code Online (Sandbox Code Playgroud)
另外,这可能是相关的:在文档的开头,我使用 jQuery 预加载页面上的一些其他空格:
$(document).ready(function() {
$('#side-display').load('info.php', {id:<?php echo $id ?>, mode:1});
});
Run Code Online (Sandbox Code Playgroud)
谢谢,
这有两个问题:
google.setOnLoadCallback(drawChart)正在调用该函数,所以我摆脱了它。
div该脚本试图在加载之前填充,因此我将函数调用添加到drawChart()制表符更改脚本内部:
$('#loadarea').load('tab1.php', function() {
drawChart();
});
现在可以了。