2015-12-16 6 views
0

Я пытаюсь вернуть значение lat из функции с использованием геокодирования Google, но он не работает. Я получаю сообщение об ошибке «неожиданный токен»?вернуть значение JSON из функции?

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

Вопрос загружается внешний ресурс с использованием 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"); 
+0

спасибо. Но, похоже, это не работает для меня. – user1661677

+0

Не могли бы вы сейчас удалить 'return'? – BenG

+0

@ BG101, конечно, вы можете. – void

1

Функции асинхронной нужна обратный вызов, или вы можете использовать обещание

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); 
}); 
Смежные вопросы