从JavaScript获取位置并将其传递给PHP

时间:2013-05-26 18:04:58

标签: php javascript

我希望使用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 个答案:

答案 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脚本中。如果您无法找到这两个参数,请检查您的客户端代码。