Javascript jQuery地理位置:无法读取属性';协调';未定义的

Javascript jQuery地理位置:无法读取属性';协调';未定义的,javascript,jquery,geolocation,Javascript,Jquery,Geolocation,我已经浏览了几个小时,想找到一个解决方案。 我对JavaScript知之甚少,实际上我正在学习它 我在获取用户的GPS位置时遇到问题。我想: -获取用户的位置(jQuery)。 -通过Ajax>PHP将其传输到服务器端 以下是我的JS代码: $(document).ready(function () { initCoords(); }); function initCoords() { if (navigator.geolocation) { navig

我已经浏览了几个小时,想找到一个解决方案。 我对JavaScript知之甚少,实际上我正在学习它

我在获取用户的GPS位置时遇到问题。我想: -获取用户的位置(jQuery)。 -通过Ajax>PHP将其传输到服务器端

以下是我的JS代码:

$(document).ready(function () {
    initCoords();
});

function initCoords() {
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(updateLocation, errorHandler, {enableHighAccuracy: false, maximumAge: 60000, timeout: 27000});
    } else
    {
        alert('Wrong browser.');
    }
}

function updateLocation(position)
{
    var longitude=position.coords.longitude;
    var latitude=position.coords.latitude;
    console.log(longitude);
    $.ajax({
        url: "../../ajax/account/handlegeolocation",
        type: "post",
        dataType: "json",
        data: {"longitude": longitude, "latitude": latitude},
        success: function (response) {
            console.log(response.message);
        },
        error: function (xmlhttprequest, textstatus, message) {
            console.log(message);
        }
    }).then(function () {
        setTimeout(updateLocation, 30);
    });
}

function errorHandler(error)
{
    console.log('Geolocation error : code ' + error.code + ' - ' + error.message);
}
令我惊讶的是我在加载页面时看到的内容。 返回位置,但JS表示返回位置的对象未定义


谢谢你的帮助

这是因为您没有从中传递位置对象

setTimeout(updateLocation, 30);
从超时调用函数
initCoords
将解决您的问题

或者这是您的代码,经过一些编辑,没有任何错误

$(document).ready(function () {
    initCoords();
});

function initCoords() {
    if (navigator.geolocation) {
        getGeoLocation();
    } else {
        alert('Wrong browser.');
    }
}
function getGeoLocation() {
    navigator.geolocation.getCurrentPosition(updateLocation, errorHandler, { enableHighAccuracy: false, maximumAge: 60000, timeout: 27000 });
}
function updateLocation(position) {
    var longitude = position.coords.longitude;
    var latitude = position.coords.latitude;
    $.ajax({
        url: "../../ajax/account/handlegeolocation",
        type: "post",
        dataType: "json",
        data: { "longitude": longitude, "latitude": latitude },
        success: function (response) {
            console.log(response.message);
        },
        error: function (xmlhttprequest, textstatus, message) {
            console.log(message);
        }
    }).then(function () {
        setTimeout(getGeoLocation, 30);
    });
}

function errorHandler(error) {
    console.log('Geolocation error : code ' + error.code + ' - ' + error.message);
}

非常感谢。它正在工作,但在加载页面时不传输数据。这意味着POST数据仅在达到第一个超时时传输。然后,一切正常。你有什么想法吗?JavaScript没什么错。。不过,若您面临这个问题,那个么它必须位于服务器端。另外,30毫秒的时间对于更新来说太少了。