2

我想使用 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 中的经度

有没有更好的方法来做到这一点,以及如何解决这个问题?

4

4 回答 4

4

您正在尝试按 ID 访问元素,但它们没有 ID。

要么向它们添加 ID 属性,要么以不同的方式引用它们。

于 2013-05-26T18:08:26.413 回答
1

你在 d 上犯了错误document.getElementByID应该很小,即document.getElementById

于 2013-05-26T18:37:46.413 回答
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;

  }

它应该工作

于 2013-05-26T18:42:26.730 回答
0

打开firebug,点击label network,查看post request是否发送了langitude和longitude参数。如果是,则故障必须在您的 php 脚本中。如果您找不到这两个参数,请检查您的客户端代码。

于 2013-05-26T18:43:56.313 回答