Javascript HTML5地理定位&x2B;Ajax请求:在Lat/Long之前触发Ajax

Javascript HTML5地理定位&x2B;Ajax请求:在Lat/Long之前触发Ajax,javascript,jquery,ajax,html,geolocation,Javascript,Jquery,Ajax,Html,Geolocation,我有一个表单,我正试图填充与用户最近的地址(使用谷歌的反向地理编码API)。这意味着我需要向Ajax脚本发送纬度和经度,但我的问题是,在进行Ajax调用之前,lat/long没有解析。下面是我用于横向/纵向计算的代码。你知道如何确保Ajax调用在收到地理位置信息后发生(如果没有,则取消)而不使用sleep调用或其他黑客解决方案吗 <script type="text/javascript"> var lat, long; function savePosition(positio

我有一个表单,我正试图填充与用户最近的地址(使用谷歌的反向地理编码API)。这意味着我需要向Ajax脚本发送纬度和经度,但我的问题是,在进行Ajax调用之前,lat/long没有解析。下面是我用于横向/纵向计算的代码。你知道如何确保Ajax调用在收到地理位置信息后发生(如果没有,则取消)而不使用
sleep
调用或其他黑客解决方案吗

<script type="text/javascript">

var lat, long;

function savePosition(position) {
    lat = position.coords.latitude;
    long = position.coords.longitude;
    //alert("Lat = "+lat+"\nLong = "+long);
}

jQuery(document).ready(function() {

    function initialize() {
        var location = navigator.geolocation.getCurrentPosition(savePosition);
        //lat = location.coords.latitude;
        //long = location.coords.longitude;
        //alert(lat+","+long);
        jQuery.ajax({
            url: "./address.php",
            type: "POST",
            data: { lat: lat, long: long }
        }).done(function(result) {
            alert(result);
        });
    }
});
</script>

var-lat,long;
功能保存位置(位置){
纬度=位置坐标纬度;
long=position.coords.longitude;
//警报(“Lat=“+Lat+”\nLong=“+long”);
}
jQuery(文档).ready(函数(){
函数初始化(){
var location=navigator.geolocation.getCurrentPosition(保存位置);
//纬度=位置坐标纬度;
//long=location.coords.longitude;
//警报(纬度+“,”+长);
jQuery.ajax({
url:“./address.php”,
类型:“POST”,
数据:{lat:lat,long:long}
}).完成(功能(结果){
警报(结果);
});
}
});
EDIT试图按照评论的建议进行编辑,并做出如下声明:

<script type="text/javascript">
jQuery(document).ready(function() {

    var lat, long;
    function savePosition(position) {
        lat = position.coords.latitude;
        long = position.coords.longitude;
        alert("Lat = "+lat+"\nLong = "+long);
        jQuery.ajax({
            url: "./address.php",
            type: "POST",
            data: { lat: lat, long: long }
        }).done(function(result) {
            alert(result);
        });
    }

    function initialize() {
        var location = navigator.geolocation.getCurrentPosition(savePosition);
        //lat = location.coords.latitude;
        //long = location.coords.longitude;
        alert(lat+","+long);
    }

    initialize();
});
</script>

jQuery(文档).ready(函数(){
var-lat,long;
功能保存位置(位置){
纬度=位置坐标纬度;
long=position.coords.longitude;
警报(“Lat=“+Lat+”\nLong=“+long”);
jQuery.ajax({
url:“./address.php”,
类型:“POST”,
数据:{lat:lat,long:long}
}).完成(功能(结果){
警报(结果);
});
}
函数初始化(){
var location=navigator.geolocation.getCurrentPosition(保存位置);
//纬度=位置坐标纬度;
//long=location.coords.longitude;
警报(纬度+“,”+长);
}
初始化();
});

但是现在,当我在Chrome上设置断点时,savePosition函数根本没有被调用。知道发生了什么吗?

地理定位也是异步的。只需在处理程序函数中进行AJAX调用,
savePosition
。尝试过之后,现在savePosition函数根本没有启动。查看我的编辑,了解我将其更改为的内容。