我有一个简单的函数,可以从mapquest中获取GIS数据:
function reverseGeocoding(lat,lng){
var url = 'http://open.mapquestapi.com/nominatim/v1/reverse?format=json&lat=' + lat + '&lon=' +lng+' &zoom=18&addressdetails=1';
$.ajax({
url: url,
crossDomain:true,
success: function(response){
$("#revgeo-place").html(response.display_name);
}
});
}
如何改进它,以便当从另一个函数调用此函数时,返回值异步更新?
我不想在函数中显式放置任何 DOM 引用,并且我想保持 ajax 异步,理想情况下应该是这样的:
$("#revgeo-place").html(reverseGeocoding(lat,lng).display_name);
function reverseGeocoding(lat,lng){
var url = 'http://open.mapquestapi.com/nominatim/v1/reverse?format=json&lat=' + lat + '&lon=' +lng+' &zoom=18&addressdetails=1';
$.ajax({
url: url,
crossDomain:true,
success: function(response){
console.log(response);
return response;
}
});
}
看起来,当我这样做时,DOM 对象没有更新,之后函数返回响应。
任何想法都会有帮助,谢谢!
最佳答案
您可以使用回调:
function reverseGeocoding(lat,lng, callback){
var url = 'http://open.mapquestapi.com/nominatim/v1/reverse?format=json&lat=' + lat + '&lon=' +lng+' &zoom=18&addressdetails=1';
$.ajax({
url: url,
crossDomain: true,
success: callback
});
};
reverseGeocoding(lat,lng, function(response){
$("#revgeo-place").html(response.display_name);
});
因此,您的 reverseGeocoding
函数与 DOM 无关。
关于javascript - jQuery 中 AJAX 回调返回值处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762880/