1

我一直在努力弄清楚为什么我的Geochart没有显示。我搜索了谷歌,并没有类似的问题的解决方案为我工作。Google Geochart Google.Visualization.Datatable不是构造函数

我试图在错误和显示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> 

回答

0

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

+0

希望这会有所帮助 - 同样,以这种方式使用DataTable构造函数,数据必须为[此格式](https://developers.google.com/chart/interactive/docs/reference#dataparam )... – WhiteHat

+0

这个问题有什么好运? – WhiteHat

0

有关不是构造函数的错误消息(如google.visualization.DataTable)意味着构造函数在您调用它的时候没有被定义(关键字为new)。所以除了WhiteHat提出的问题之外,你还需要调查一下。

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