我希望使用javascript获取经度和纬度,而不是将其与之前的位置进行比较。当你从另一台计算机登录时,像Facebook这样的东西,但更简化。为了实现这一点,我创建了2个隐藏字段,当用户提交表单时,值将被发送到服务器。
<body>
<p id="log">Login to continue:
<form action="welcome.php" method="post">
Username: <input type="text" name="user" required >
Password: <input type="password" required>
<input type="hidden" name= "longitude" id="longitude">
<input type= "hidden" name ="latitude" id="latitude">
<input type="submit" name="submit" onclick="getLocation()">
</p>
<script>
var x=document.getElementById("log");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.getElementByID("longitude").value = longitude;
document.getElementByID("latitude").value = latitude;
}
</script>
但是在 welcome.php 代码:
$latitude=$_POST["latitude"];
$longtude=$_POST["longitude"];
返回: 注意:第8行的C:\ xampp \ htdocs \ welcome.php中未定义的索引:纬度
注意:第9行的C:\ xampp \ htdocs \ welcome.php中的未定义索引:经度
有没有更好的方法来解决这个问题?
答案 0 :(得分:4)
您正在尝试按ID访问元素,但它们没有ID。
为它们添加ID属性,或以不同的方式引用它们。
答案 1 :(得分:1)
你错误地document.getElementByID
d应该很小,document.getElementById
答案 2 :(得分:0)
更改此
function showPosition(position)
{
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.getElementByID("longitude").value = longitude;
document.getElementByID("latitude").value = latitude;
}
到这个
function showPosition(position)
{
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.getElementById("longitude").value = longitude;
document.getElementById("latitude").value = latitude;
}
它应该可行
答案 3 :(得分:0)
打开萤火虫,点击标签网络,如果已发送参数经度和经度,请查看帖子请求。如果是,则失败必须在您的PHP脚本中。如果您无法找到这两个参数,请检查您的客户端代码。