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



我试图获取地理位置坐标并在加载页面时将它们发送到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>

重新加载由以下行触发,该行由于异步调用而追加latitudelongitude

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

你可以做的是,你可以检查参数是否存在,你可以停止回调。请看这个: 如何从 GET 参数中获取值?

使用另一个问题的答案,您可以实现如下内容:

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

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

每次加载页面时,您都会通过"onload"事件调用getLocation((,该事件又调用getCurrentPosition((,而getCurrentPosition((又使用window.location.href重新加载页面。然后,当页面重新加载时,onload 事件再次触发,整个事情从头开始。

你基本上创建了一个无限循环。

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

相关内容

  • 没有找到相关文章

最新更新