真的希望有人可以帮我解决这个问题,我似乎将这个HTML5 / Jquery组合完美地工作,除非它需要刷新才能工作!
基本上我使用HTML5地理定位将用户lat / long存储在会话中,然后用它来做其他一些事情。我之后用它做了什么不是问题,它实际上存储了让我悲伤的纬度/经度。
我正在使用的代码如下。我已经评论过我在哪里发现了问题。
任何帮助表示赞赏!
<?php
session_start();
$url = $_SERVER["REQUEST_URI"];
?>
<script src="modernizr.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script>
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
}
function showPosition(position)
{
localStorage.lat = position.coords.latitude;
localStorage.lon = position.coords.longitude;
}
$(document).ready(function(){
if (Modernizr.geolocation) {
getLocation();
//If I run getLocation() again here it works first time
//A bit of debugging shows that this is where the lat/long values are being lost
$.get("savetosession.php", {lat: localStorage.lat, lon: localStorage.lon}, function(result){
$.get("dothis.php", {url:<?php echo $url; ?>}, function(result){
$("div").html(result);
});
});
}
});
</script>
<div></div>
答案 0 :(得分:1)
问题是$.get
在getLocation()
完成之前执行(因为Javascript是非阻塞的)。
你可以使用这样的回调:
<script>
$(document).ready(function(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
localStorage.lat = position.coords.latitude;
localStorage.lon = position.coords.longitude;
$.get("savetosession.php", {lat: localStorage.lat, lon: localStorage.lon}, function(result){
$.get("dothis.php", {url:<?php echo $url; ?>}, function(result){
$("div").html(result);
});
});
});
} //endif
});
</script>