繁体   English   中英

为什么我将ajax与Google GeoChart api一起使用失败

[英]why I use ajax with Google GeoChart api failed

我是javascript新手。 而且我尝试使用Google Geochart创建一个不错的报告。 从示例中,代码应如下所示:

function drawRegionsMap() {
        var data = google.visualization.arrayToDataTable([
          ['Country', 'Popularity'],
          ['Germany', 200],
          ['United States', 300],
          ['Brazil', 400],
          ['Canada', 500],
          ['France', 600],
          ['RU', 700]
        ]);

        var options = {};

        var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
        chart.draw(data, options);
    }; 

就我而言,数据来自ajax请求。 所以我将代码更改为:

function drawRegionsMap() {
var jsonData = $.ajax({
        url: "json/geo.pl",
        dataType: 'json',
        async: false
        }).responseText;

            var data = google.visualization.arrayToDataTable(jsonData);

            var options = {};

            var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
            chart.draw(data, options);
        }; 

但这对我不起作用。 Firefox中的错误消息是“错误:不是数组”。 希望可以有人帮帮我。 谢谢!

json / geo.pl的输出是:-bash-4.1 $ json / geo.pl

Content-Type: application/json; charset=ISO-8859-1

[
   [
      "Country",
      "Uploads"
   ],
   [
      "AL",
      1
   ],
   [
      "AP",
      1
   ],
   [
      "AR",
      47
   ],
   [
      "AT",
      25
   ],
   [
      "AU",
      75
   ],
   [
      "AZ",
      10
   ],
   [
      "BD",
      4
   ],
   [
      "BE",
      65
   ],
   [
      "BG",
      15
   ],
   [
      "BN",
      1
   ],
   [
      "BR",
      177
   ],
   [
      "CA",
      536
   ],
   [
      "CH",
      37
   ],
   [
      "CI",
      3
   ],
   [
      "CL",
      35
   ],
   [
      "CN",
      947
   ],
   [
      "CO",
      4
   ],
   [
      "CS",
      1
   ],
   [
      "CY",
      2
   ],
   [
      "CZ",
      20
   ],
   [
      "DE",
      135
   ],
   [
      "DK",
      51
   ],
   [
      "DO",
      1
   ],
   [
      "EE",
      26
   ],
   [
      "ES",
      53
   ],
   [
      "EU",
      2
   ],
   [
      "EU",
      9
   ],
   [
      "FI",
      19
   ],
   [
      "FR",
      183
   ],
   [
      "GB",
      341
   ],
   [
      "GE",
      14
   ],
   [
      "GR",
      11
   ],
   [
      "HK",
      94
   ],
   [
      "HR",
      2
   ],
   [
      "HU",
      7
   ],
   [
      "ID",
      37
   ],
   [
      "IE",
      36
   ],
   [
      "IL",
      122
   ],
   [
      "IN",
      543
   ],
   [
      "IS",
      5
   ],
   [
      "IT",
      129
   ],
   [
      "JP",
      200
   ],
   [
      "KG",
      4
   ],
   [
      "KR",
      451
   ],
   [
      "LB",
      3
   ],
   [
      "LK",
      1
   ],
   [
      "LT",
      5
   ],
   [
      "LU",
      4
   ],
   [
      "MA",
      2
   ],
   [
      "MD",
      3
   ],
   [
      "MO",
      3
   ],
   [
      "MU",
      2
   ],
   [
      "MX",
      77
   ],
   [
      "MY",
      43
   ],
   [
      "NG",
      1
   ],
   [
      "NI",
      1
   ],
   [
      "NL",
      33
   ],
   [
      "NO",
      27
   ],
   [
      "NZ",
      4
   ],
   [
      "OM",
      1
   ],
   [
      "PA",
      4
   ],
   [
      "PH",
      9
   ],
   [
      "PK",
      20
   ],
   [
      "PL",
      76
   ],
   [
      "PT",
      14
   ],
   [
      "PY",
      2
   ],
   [
      "QA",
      2
   ],
   [
      "RO",
      6
   ],
   [
      "RU",
      164
   ],
   [
      "SA",
      30
   ],
   [
      "SE",
      148
   ],
   [
      "SG",
      101
   ],
   [
      "SK",
      34
   ],
   [
      "TH",
      22
   ],
   [
      "TR",
      28
   ],
   [
      "TT",
      1
   ],
   [
      "TW",
      110
   ],
   [
      "UA",
      26
   ],
   [
      "US",
      9386
   ],
   [
      "VE",
      1
   ],
   [
      "VN",
      28
   ],
   [
      "ZA",
      89
   ],
   [
      "ZM",
      1
   ]
]

我已通过将json / array从ajax responseText转换为javascript数组来解决此问题。

function drawRegionsMap() {
var jsonData = $.ajax({
        url: "json/geo.pl",
        dataType: 'json',
        async: false
        }).responseText;

var output = new Array();
output = JSON.Parse(jsonData);
            var data = google.visualization.arrayToDataTable(output);


            var options = {};

            var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
            chart.draw(data, options);
        }; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM