Javascript TypeError:google.visualization未定义

Javascript TypeError:google.visualization未定义,javascript,google-visualization,Javascript,Google Visualization,我正在尝试使用Google charts API,但我遇到了一个无法理解的错误: 这是我的密码: <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="js/statistics/overview.js"></script> 这很奇怪,因为console.log()将为我提供带有

我正在尝试使用Google charts API,但我遇到了一个无法理解的错误:

这是我的密码:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="js/statistics/overview.js"></script>

这很奇怪,因为console.log()将为我提供带有属性可视化的google对象。我做错了什么?

计时问题。通常你称之为谷歌图表

  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
  ...
  }
所以,当加载可视化包时,调用要绘制的函数

现在,在您的情况下,一切都将在以后完成,因此您必须执行以下操作:

google.load("visualization", "1", {packages: ["corechart"]});

function doStats() {

var statisticsOverview = {
    init: function() {
        console.log('init');
        this.drawIncomeChart();
        this.drawExpensesChart();
        this.drawEconomiesChart();
    },
    ...
};    

statisticsOverview.init()
}

google.setOnLoadCallback(doStats);
同样的结果也可以通过使用

setTimeout(function() {
    statisticsOverview.init();
}, 3000);

没有包装器函数。

试试这种方法。这对我来说很好

    var timeout;
    google.charts.load('current', { 'packages': ['corechart'] });
    $(document).ready(function(){
       timeout = setInterval(function () {
          if (google.visualization != undefined) {
             drawChart();
             clearInterval(timeout);
          }
       }, 300);
    });

    function drawChart(range, type) {
       var data = new google.visualization.DataTable();
    .....
    }

init
part是如何调用的?就在我的对象声明之后(见代码的最后一行)啊,对不起。没有注意到。动态加载应该会有帮助,谢谢。所以,如果我理解正确的话,因为调用是异步的,所以我的对象是在Google可视化之前初始化的?是的,在调用
arrayToDataTable
时,包似乎没有完全加载。至少对于第一个chart.WTF,当函数说
onLoad
时,它应该在加载所有内容后触发。这是一个糟糕的库,因此我会随机失败。如果我删除了一些警报,它会工作,否则它不会。我更喜欢调用
google.charts.setOnLoadCallback(myfunc)
,而不是调用setTimeout。请注意,它是
google.charts.
,而不仅仅是
google.
。请注意,您可以,而不仅仅是一个。当一页上有多个图形时非常有用。。
    var timeout;
    google.charts.load('current', { 'packages': ['corechart'] });
    $(document).ready(function(){
       timeout = setInterval(function () {
          if (google.visualization != undefined) {
             drawChart();
             clearInterval(timeout);
          }
       }, 300);
    });

    function drawChart(range, type) {
       var data = new google.visualization.DataTable();
    .....
    }