为什么我的test_loc.php会自己重新加载

时间:2018-10-19 10:52:37

标签: javascript php google-maps geolocation location

加载页面时,我尝试获取地理位置坐标并将其发送到url

我在JavaScript中使用了onload函数。当我运行js时,它可以工作,但是会反复刷新。

<script>

var x = document.getElementById("demo");

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
window.onload = getLocation;

function showPosition(position) {
 window.location.href = "test_loc.php?latitude=" + position.coords.latitude +
  "&longitude=" + position.coords.longitude;

}
</script>

3 个答案:

答案 0 :(得分:1)

重新加载由以下行触发,该行附加了异步调用的latitudelongitude becoz:

window.location.href = "test_loc.php?latitude=" + position.coords.latitude + "&longitude=" + position.coords.longitude;

您可能要做的是,您可以检查参数是否存在,并可以停止回调。请参见:How to get the value from the GET parameters?

有了其他问题的答案,您可以实现类似以下内容的

function showPosition(position) {
  if (typeof parse_query_string("latitude") == "undefined")
    window.location.href = "test_loc.php?latitude=" + position.coords.latitude + "&longitude=" + position.coords.longitude;
}

答案 1 :(得分:1)

因为您将showPosition作为成功回调传递给geolocation.getCurrentPosition,然后将其设置为location.href,从而重新加载了页面。

答案 2 :(得分:0)

每次加载页面时,都通过“ onload”事件调用getLocation(),该事件又调用getCurrentPosition(),后者又使用window.location.href重新加载页面。然后,当页面重新加载时,onload事件将再次触发,并且整个过程从头开始。

您基本上已经创建了一个无限循环。

是否真的需要刷新页面以传递坐标?如果需要将它们发送到服务器,请考虑改用AJAX。