Javascript 使用ajax将变量从JS传递到PHP
我试图将gps坐标从JavaScript传递到同一页面上的php变量,但在脚本运行后,并尝试在php中进行回显,它没有显示任何内容(注意:未定义索引:lat)Javascript 使用ajax将变量从JS传递到PHP,javascript,php,ajax,Javascript,Php,Ajax,我试图将gps坐标从JavaScript传递到同一页面上的php变量,但在脚本运行后,并尝试在php中进行回显,它没有显示任何内容(注意:未定义索引:lat) var x=document.getElementById(“gps”); var y=document.getElementById(“gps”); 函数getLocation() { if(导航器.地理位置) { navigator.geolocation.getCurrentPosition(showPosition); } e
var x=document.getElementById(“gps”);
var y=document.getElementById(“gps”);
函数getLocation()
{
if(导航器.地理位置)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML=“此浏览器不支持地理位置。”;}
}
功能显示位置(位置)
{
x=位置坐标纬度;
y=位置坐标经度;
$.ajax({
键入:“POST”,
url:'index.php',
数据:{lat:x},
});
PHP代码:
echo "<script> getLocation(); </script>";
$lat=$_POST['lat'];
echo $lat;
echo“getLocation();”;
$lat=$_POST['lat'];
echo$lat;
如何将变量从Javascript传递到php?加载jQuery库:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
从AJAX响应调用javascript函数不是一个好选项。因此,我将在complete中调用$的值函数中的getLocation()函数。AJAX:
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;}
});
}
您需要理解客户端代码和服务器端代码之间的区别。特别是,您需要理解HTTP请求的含义。您加载了jquery库吗?我在代码中看不到它。$.ajax是一个函数。ajax不是这样工作的,您不需要回显任何JS函数。您只需要调用函数showPosition()从js获取发布的值,然后在后端获取发布的值。使用if-isset检查它是否确实存在,使用三元运算符很容易。我没有时间在这里给出完整的工作示例,但这个问题在互联网上已经被回答了1000多次,即使是一些答案,也会给出完整的工作代码。同意@Jonast92-Y您需要使用Jquery AJAX.complete函数来处理返回。对于此测试,您应该通过PHP回显lat。如果您不确定PHP是否接收到您想要的数据,请尝试运行die(var\u export($\u POST));作为PHP的第一行。您还应该提到.complete函数-他目前没有在JS中正确处理返回的数据。OP可能正在尝试启动getLocation函数?添加文档准备就绪,可能是在中?在这种情况下,
complete:
行应为complete:function(text){getLocation(text);}
。我意识到他的getLocation没有参数,但传递返回的AJAX值而不是执行其他操作才有意义(因为它在其他地方不可用)@matcarlson是的,应该是这样。但是关于getLocation没有任何争议,我认为他正在试图将从javascript获取的位置保存到服务器。这是有意义的,因为他正在getLocation中调用showPosition。感谢所有帮助:)更新了代码,但遗憾的是,我仍然无法将x变量保存到服务器。首先尝试在我的站点顶部返回文本给我一个[Object]答案,但不是php给我的答案。
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; }
});
}
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;}
});
}