返回JSON值不起作用?

时间:2015-12-16 08:31:01

标签: jquery function google-geocoder

我尝试使用Google的地理编码器从函数中返回lat值,但它无效。我收到一条错误,上面写着"意外令牌"?

function getLat(address) {
  var googleToken = "my-google-token"
  var geoUrl = "https://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&key=" + googleToken;
    $.getJSON(geoUrl, function(data) {
      return data.results[0].geometry.location.lat);
    });
}

$('body').html(getLat('New+York,+NY'));

2 个答案:

答案 0 :(得分:2)

问题是使用XMLHTTPRequest加载外部资源是异步任务。

更好,更简单的方法是

function getLat(address, $el, type) {
  var googleToken = "my-google-token"
  var geoUrl = "https://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&key=" + googleToken;
    $.getJSON(geoUrl, function(data) {
      if(type=="html")
         $el.html(data.results[0].geometry.location.lat);
      else if(type=="text")
         $el.text(data.results[0].geometry.location.lat);
    });
}

getLat('New+York,+NY', $("body"), "html");
getLat('New+York,+NY', $("div"), "text");

答案 1 :(得分:1)

async函数需要回调,或者您可以使用promises

function getLat(address) {
    return $.getJSON('https://maps.googleapis.com/maps/api/geocode/json', {
       adress : adress,
       key    : "my-google-token"
    });
}

getLat('New+York,+NY').done(function(data) {
    $('body').html(data.results[0].geometry.location.lat);
});