【问题标题】:Google Geochart Google.Visualization.Datatable is not a constructorGoogle Geochart Google.Visualization.Datatable 不是构造函数
【发布时间】:2018-01-23 23:29:37
【问题描述】:

我一直在发疯,想弄清楚为什么我的 Geochart 没有显示。我在谷歌上搜索了所有类似问题的解决方案都没有对我有用。

我尝试在出错并显示 json 数据的行之前添加一个警告框,我可以看到其中有数据。

任何提示将不胜感激。

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
        google.charts.load('current', { 'packages': ['geochart']});
        google.charts.setOnLoadCallback(getDataForMap);

        function getDataForMap() {

           $.ajax({
                type: "POST",
                url: "myWebService.asmx/getJSONData",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                timeout:600,
                error: function (xhr, textStatus, error) {
                    alert("Error: " + error)
                },
                complete:function(response)
                {
                    var data = new google.visualization.DataTable(response);
                    //THIS IS WHERE IT ALWAYS STOPS WORKING
                    var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));
                    var options = {
                        region: 'US',
                        displayMode: 'regions',
                        resolution: 'provinces',
                    };
                    chart.draw(data, options);
                }

                })                
        };
    </script>

【问题讨论】:

    标签: json charts google-visualization google-datatable


    【解决方案1】:

    complete 函数不返回任何数据
    第一个参数是请求对象
    见 --> jQuery.ajax()

    请尝试使用done 回调

    $.ajax({
      type: "POST",
      url: "myWebService.asmx/getJSONData",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      error: function (xhr, textStatus, error) {
        alert("Error: " + error)
      },
      done: function (response) {
        var data = new google.visualization.DataTable(response);
        var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));
        var options = {
          region: 'US',
          displayMode: 'regions',
          resolution: 'provinces',
        };
        chart.draw(data, options);
      }
    });
    

    也推荐不要使用 --> async: false

    【讨论】:

    • 希望这会有所帮助——另外,要以这种方式使用 DataTable 构造函数,数据必须位于 this format...
    • 这个问题好运吗?
    【解决方案2】:

    关于某些东西不是构造函数(如 google.visualization.DataTable)的错误消息意味着在调用它时未定义构造函数(使用 new 关键字)。因此,除了 WhiteHat 提出的问题之外,您还需要对此进行调查。

    查看您的代码,我怀疑问题是由加载 jsapi 加载器和 gstatic 图表加载器引起的。您现在应该只加载 gstatic 图表加载器(有一段时间,GeoCharts 需要两者,但当前版本不需要)。但不清楚为什么加载两个加载器会导致这个问题,所以我的直觉是在你的实际整页中还有更多的事情发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 2023-03-26
      • 2013-12-25
      • 2021-01-11
      • 2015-12-04
      相关资源
      最近更新 更多