有人知道如何从包含$.getJSON
的函数返回值吗?
问题是我试图从其他函数调用该函数以获取值,但它总是以undefined
的形式返回!我怎么才能让它工作?
function TranslateLatLanToAddress(LatLng) {
var latlng = "34.1574183,-118.437125";
var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latlng + "&sensor=false";
$ = jQuery;
$.getJSON(url, function (data) {
for (var i = 0; i < data.results.length; i++) {
var address = data.results[i].formatted_address;
// var address = data.results[i].address_components[4].long_name + data.results[i].address_components[6].short_name;
// alert(address);
return false;
}
});
}
function GetVal() {
var retVal =TranslateLatLanToAddress(LatLng);
alert(retVal); // It's undefined!!!
}
字符串
3条答案
按热度按时间siv3szwd1#
AJAX 调用是异步的。这意味着当请求被发送到服务器(GoogleMap)时,您的脚本将继续。
这是一件好事,因为这意味着您的页面将在等待结果时继续加载。
要利用这一点,可以使用
callback
方法。字符串
kyvafyod2#
AJAX 是异步的,你正在做的是(伪):
字符串
所以你可以做的是在 AJAX get回调中调用一个函数:
型
将所需的 AJAX 响应数据(如果需要)传递给
myCallbackFunction( data );
,在任何情况下,只有在AJAX完成其工作后,才会调用fnmyCallbackFunction
。1wnzp6jl3#
$.getJSON使用的是XMLHTTPRequest,因此它自然是一个异步函数。最好是分配一个回调函数来执行一些东西。
字符串
此外,$.getJSON还有另一个方便的回调(done,fail,always),您可以使用success callback之类的函数进行覆盖。