我一直在使用 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/