-1

我正在尝试将 gps 坐标从 JavaScript 传递到同一页面上的 php 变量,但在脚本运行后,并尝试在php中回显,它没有显示任何内容(注意:未定义索引:lat)。

<!DOCTYPE html>
<html>
<body>
<p id="gps"></p>
<script>
var x=document.getElementById("gps");
var y=document.getElementById("gps");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
 x=position.coords.latitude;
  y=position.coords.longitude;
$.ajax({  
    type: 'POST',
    url: 'index.php', 
    data: { lat: x },
});
</script>

PHP代码:

 echo "<script> getLocation(); </script>";
        $lat=$_POST['lat'];
        echo $lat;

如何将变量从 Javascript 传递给 php?

4

1 回答 1

3

加载 jQuery 库:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

在之后插入上面的<script>标签<head>

因为$.ajax是 jQuery 函数,所以必须先加载 jQuery 才能使用。

您还需要关闭showPosition函数并对返回的数据执行以下操作complete

function showPosition(position){
 x=position.coords.latitude;
 y=position.coords.longitude;
 $.ajax({  
    type: 'POST',
    url: 'index.php', 
    data: { lat: x },
    complete: function(text){ return text; }
 });
}

从AJAX响应调用javascript函数也不是一个好的选择。所以我会在$.ajax的完整值函数中调用 getLocation() 函数:

function showPosition(position){
     x=position.coords.latitude;
     y=position.coords.longitude;
     $.ajax({  
        type: 'POST',
        url: 'index.php', 
        data: { lat: x },
        complete: function(text){getLocation();return text;}
     });
}
于 2013-10-23T14:21:16.733 回答