加载页面时,我尝试获取地理位置坐标并将其发送到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>
答案 0 :(得分:1)
重新加载由以下行触发,该行附加了异步调用的latitude
和longitude
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。