Sta*_*ann 28 jquery google-visualization jsapi
我有几个使用Google Charts API实例化各种图表的函数.
当我在没有jQuery $(document).ready方法的情况下调用它们时,一切正常.但是用这种方法,我看着空白屏幕.
为什么?
<script type="text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js" charset="utf-8"></script>
<script type="text/javascript" src = "http://www.google.com/jsapi" charset="utf-8"></script>
function drawColumnChart1(){..some code..}
function drawColumnChart2(){..some code..}
function drawGeoChart(){.some code..}
//This works fine.
google.load("visualization", "1", {packages:["piechart", "corechart", "geomap"]});
google.setOnLoadCallback(window.drawColumnChart1);
google.setOnLoadCallback(window.drawColumnChart2);
google.setOnLoadCallback(window.drawGeoChart);
//This doesn't work
$(document).ready(function(){
google.load("visualization", "1", {packages:["piechart", "corechart", "geomap"]});
google.setOnLoadCallback(window.drawColumnChart1);
google.setOnLoadCallback(window.drawColumnChart2);
google.setOnLoadCallback(window.drawGeoChart);
});
Run Code Online (Sandbox Code Playgroud)
更新 以下是我在Firebug中遇到的错误:
uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://www.google.com/jsapi :: Q :: line 20" data: no]
http://www.google.com/jsapi
Line 22
Run Code Online (Sandbox Code Playgroud)
dig*_*oel 20
使用jQuery $(document).ready()的google.setOnLoadCallback,可以混合使用吗?
可能是最接近的答案,Ryan Wheale对以下内容的回答也可能有所帮助.
可以多次使用google.setOnLoadCallback吗?
tib*_*dev 14
根据google可视化文档,您需要在 onload或jquery ready 之前加载可视化包.我建议在jsapi脚本引用后立即加载,如下所示.
否则你将获得1)google未定义(引用错误)或2)如果使用ajax可能是空白响应和空白页面没有错误.
加载顺序:(使用您的示例)
<script type="text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js" charset="utf-8"></script>
<script type="text/javascript" src = "http://www.google.com/jsapi" charset="utf-8"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["piechart", "corechart", "geomap"]});
</script>
$(document).ready(function(){
google.setOnLoadCallback(window.drawColumnChart1);
google.setOnLoadCallback(window.drawColumnChart2);
google.setOnLoadCallback(window.drawGeoChart);
});
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的范例.设置google.load方法的回调,并且根本不使用google.setOnLoadCallback(不需要AFAIK).
MyChart.prototype.render = function() {
var self = this;
google.load("visualization",
"1",
{ callback: function() { self.visualize(); },
packages: ["corechart"] }
);
}
MyChart.prototype.visualize = function() {
var data = google.visualization.arrayToDataTable(
[
['Year', 'Sales', 'Expenses'],
['2004', 1000, 400],
['2005', 1170, 460],
['2006', 660, 1120],
['2007', 1030, 540]
]);
var options = {
title: 'Company Performance',
hAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
};
var chart = new google.visualization.ColumnChart(document.getElementById("mychart_div"));
chart.draw(data, options);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36594 次 |
| 最近记录: |