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
のはなぜですか?実際、未定義の変数は、実際の値ではなく、ajaxブロックでpostLat
渡されます。search-add-process.php
- なぜ
navigator.geolocation.getCurrentPosition()
関数はconsole.log(postLat+" 1231")
行の後に実行されるのですか?私が間違っている場合は訂正してください。Javascriptは1行ずつ実行されると常に思っていました。