0

我有一个 html 页面,其中包含一些用于从 Google API 生成图表的 javascript。当我直接访问该页面时,它按预期工作,显示图表。

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1.0', { 'packages': ['corechart'] });
google.setOnLoadCallback(drawChart);
function drawChart() {
   //// code to generate chart
   var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
   chart.draw(data, options);
}
</script>
<div id="chart_div">
   Chart Div
</div>

我想将此图表加载到另一个页面上。我尝试使用 JQuery 的 $.get 和 $.load,但都没有工作。如果我在页面中添加一些文本并调用 get/load 我可以看到文本但看不到图表 - 似乎 Javascript 没有执行。

我添加alert('msg')并看到google.load被调用,但没有调用其他 JS。

从我想要包含图表的其他页面中,我有以下 JS:

$(document).ready(function () {
    $('#test').load('chart?param=1', function () {
        alert('Load was performed.');
    });
});

但“负载已执行”永远不会受到打击。

4

1 回答 1

0

“SCRIPT5009:‘谷歌’未定义”

我怀疑<script type="text/javascript" src="https://www.google.com/jsapi"></script>当你 .load() 那个代码块时这不起作用。由于 jQuery 已经在运行,试试这个

<!-- get rid of this <script type="text/javascript" src="https://www.google.com/jsapi" -->
<script type="text/javascript">
// does not need $(function()) unless you're running this on its own
// when loading this in using $.load() it's already ready.

$.getScript('https://www.google.com/jsapi', function(){
    google.load('visualization', '1.0', { 'packages': ['corechart'] });
    google.setOnLoadCallback(drawChart);
});
function drawChart() {
   //// code to generate chart
   var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
   chart.draw(data, options);
}
</script>
于 2013-01-05T20:23:07.890 回答