我已经编写了这个函数来检测和更新 postLat 和 postLon 变量。
function searchAddSubmit(){
var shopId = 1; //random number to test the function
var postLon, postLat;
var shopTime = $("#selected-search-result-minutes").val();
navigator.geolocation.getCurrentPosition(function(position){
postLat=position.coords.latitude;
postLon=position.coords.longitude;
console.log(postLat);
console.log(postLon);
console.log('reun');
},function(error){});
console.log(postLat+" 1231");
console.log(postLon+" 1231");
$.ajax({
type: "POST",
url: "search-add-process.php",
cache: false,
dataType: "json",
data:{
id: shopId,
time: shopTime, //this value is taken from a form input
lat: postLat,
lon: postLon
},
success: function (data) {
if(data.error === true) {
alert(data.msg);
} else {
alert(data.msg);
//remove output when successful
}
}
});
}
我使用 Chrome 的 Javascript 控制台工具检查变量(用 打印console.log()
),结果如下:
undefined 1231
undefined 1235
1.2957797
103.8501069
ruen
说到这一点,我有这些问题:
- 为什么是变量
postLon
而不postLat
更新?事实上,未定义的变量被传递到search-add-process.php
ajax 块中,而不是实际值。 - 为什么
navigator.geolocation.getCurrentPosition()
函数在行后运行console.log(postLat+" 1231")
?如果我错了,请纠正我,我一直认为 Javascript 会逐行执行。