1

我一直在想弄清楚为什么我的 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>
4

2 回答 2

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

于 2017-08-16T00:06:23.103 回答
0

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

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

于 2017-08-16T13:17:00.130 回答