javascript - jQuery 中 AJAX 回调返回值处理

标签 javascript jquery ajax callback return

我有一个简单的函数,可以从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/

相关文章:

javascript - 已识别的 quill 工具栏类列表

javascript - Windows Azure 是未定义的 JavaScript 错误

Javascript:我是否正确使用了 onreadystatechange ?

c# - 在短暂延迟后获取 aspx 页面的执行输出

javascript - 如何计算页面上具有值的输入总数?

javascript - 更改 img 在 fc-content fullcalendar 中的位置

javascript - 第一个淡入淡出有时似乎不起作用(jquery)

Javascript 变量作用域和链式函数调用

php - 如何在codeigniter中判断是否是Ajax请求?

python - 如何使用scrapy获取XMLHTTP请求的数据