如何将异步任务返回值放入变量(全局?)

时间:2014-08-27 14:07:35

标签: javascript jquery asynchronous geolocation google-geolocation

我必须使用谷歌(或类似的)地理编码API来获取纬度和经度的信息(州,国家,地址)。

我已经搜索了很多内容并且我找到了一些有用的代码,但是这段代码会将信息放在警告框中。

我找到了关于回调函数 ...

的提示

我需要在异步任务之外使用“state”或“Country”(例如,当我按下按钮时在HTML页面中)。

我尝试创建一个全局变量( actArea ),但是,在 navigator.geolocation.getCurrentPosition 调用之后,其值为“ EMPTY ”。 我认为这是正确的,因为异步任务是异步但是如何将异步任务结果保存为全局变量或类似?

为什么回调无效? 错误在哪里?

我也尝试过使用 setTimeout ,但效果相同。

感谢。

这是我的代码的一部分( geodec.js ):

var x = document.getElementById("destination_div");

var actLatPos = 45.076947;
var actLonPos = 7.614174;
var actArea = 'EMPTY';

function getLocation() {

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition,showError);

        //actArea returns "EMPTY"
        alert(actArea);

    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }

}

function retrieveGPSdata(data)
{
    actArea=data.results[0].address_components[5].long_name;

    //actArea returns "Piemonte"
    alert(actArea);

    $('#destination_div').text( "Latitude: " + actLatPos + " Longitude: " + actLonPos + " Area: " + actArea);
}
function showPosition(position) {
    var richiesta='http://maps.googleapis.com/maps/api/geocode/json?latlng=' + actLatPos + ',' +  actLonPos + '&sensor=true';

    //setTimeout(function()
    //{
        $.ajax({ url:richiesta, success:retrieveGPSdata});
    //},8000);

}

0 个答案:

没有答案