我试图获取地理位置坐标并在加载页面时将它们发送到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>
重新加载由以下行触发,该行由于异步调用而追加latitude
和longitude
:
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。