Сохранение переменных за пределами navigator.geolocation.getCurrentPosition?(JavaScript) - PullRequest
6 голосов
/ 30 марта 2012

Я пытаюсь поиграть с областью js, чтобы вытащить переменную из navigator.geolocation.getCurrentPosition

var lat;
function callback (position) {
    lat = position.coords.latitude;
}
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000});
// after getCurrentPosition succeeds
alert(lat); // this alerts null

Приведенный выше код не может хранить position.coords.latitude в переменной lat из-за области видимости. Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Вы должны помнить асинхронную природу \ ajax.

это порядок выполнения вашего кода:

var lat;
alert(lat); // this alerts null
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000});
function callback (position) {
    lat = position.coords.latitude;
}

Вот почему вы получаете ноль. async! , async! :)

0 голосов
/ 19 июля 2015

Вы можете сохранить переменную Position для ввода скрытого поля в готовом документе.После этого вы можете использовать jQuery для возврата значения Geolocation

Javscript:

<script>
var lat;
alert(lat); // this alerts null
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000});
function callback (position) {
    jQuery('#pos_lat').val(position.coords.latitude);
}
</script>

HTML:

    <input hidden id='pos_lat' value='' /> 
    //value = position latitude on load

Для возврата значения:

jQuery('#pos_lat').val();
...