我正在尝试将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?
答案 0 :(得分: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;}
});
}