Javascript 使用AJAX将值从JS发送到PHP

Javascript 使用AJAX将值从JS发送到PHP,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我尝试按照在中提供的代码将值从JavaScript发送到PHP 我得到了一个错误 注意:第25行的/Applications/XAMPP/xamppfiles/htdocs/test1.php中未定义的索引:getlat 注意:未定义的索引:第26行的/Applications/XAMPP/xamppfiles/htdocs/test1.php中的getlon 谁能帮我解决这个问题,谢谢 我的代码是: <html> <head> <script src="http

我尝试按照在中提供的代码将值从JavaScript发送到PHP

我得到了一个错误

注意:第25行的/Applications/XAMPP/xamppfiles/htdocs/test1.php中未定义的索引:getlat

注意:未定义的索引:第26行的/Applications/XAMPP/xamppfiles/htdocs/test1.php中的getlon

谁能帮我解决这个问题,谢谢

我的代码是:

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
}
function showPosition(position) {
    document.getElementById("getlat").value = position.coords.latitude;
    document.getElementById("getlon").value = position.coords.longitude;
}
$( document ).ready(function() {
$.ajax({url:"test1.php",type:"POST",async:false,
data:{getlat:$("#getlat").val(),getlon:$("#getlon").val()}
});
});
</script>
</head>
<body>
<input type="hidden" id="getlat" name="getlat" /> 
<input type="hidden" id="getlon" name="getlon" />
<?php 
$lat = $_POST["getlat"];
$lon = $_POST["getlon"]; 
echo $lat;
echo $lon;
?>
</body>
</html>

函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showPosition);
}
}
功能显示位置(位置){
document.getElementById(“getlat”).value=position.coords.latitude;
document.getElementById(“getlon”).value=position.coords.longitude;
}
$(文档).ready(函数(){
$.ajax({url:“test1.php”,键入:“POST”,async:false,
数据:{getlat:$(“#getlat”).val(),getlon:$(“#getlon”).val()}
});
});
更新1

在评论之后,我尝试了这种方式,但也不起作用

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
}
function showPosition(position) {
    document.getElementById("getlat").value = position.coords.latitude;
    document.getElementById("getlon").value = position.coords.longitude;
}
</script>
</head>
<body>
<input type="hidden" id="getlat" name="getlat" /> 
<input type="hidden" id="getlon" name="getlon" />
<?php 
$lat = $_POST["getlat"];
$lon = $_POST["getlon"]; 
echo $lat;
echo $lon;
?>
<script>
$( document ).ready(function() {
getLocation();
$.ajax({url:"test1.php",type:"POST",async:false,
data:{getlat:$("#getlat").val(),getlon:$("#getlon").val()}
});
});
</script>
</body>
</html>

函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showPosition);
}
}
功能显示位置(位置){
document.getElementById(“getlat”).value=position.coords.latitude;
document.getElementById(“getlon”).value=position.coords.longitude;
}
$(文档).ready(函数(){
getLocation();
$.ajax({url:“test1.php”,键入:“POST”,async:false,
数据:{getlat:$(“#getlat”).val(),getlon:$(“#getlon”).val()}
});
});

您需要先在文档中调用getLocation()。ready()回调。 在这之后,在getCurrentPosition()调用的回调中执行ajax请求


这应该可以完成任务。

你有三个不同的严重问题

您从不调用
getLocation
用数据填充输入元素的函数永远不会被调用。你得叫它

getLocation()
放入
ready
事件处理程序中

getCurrentPosition
是异步的 在您启动Ajax请求时,您无法确定它是否已完成运行(并用数据填充输入元素)

您需要在
getLocation
的回调函数中移动对
$.ajax
的调用。i、 e.就在这一行之后:
document.getElementById(“getlon”).value=position.coords.longitude

Ajax是一个不同的请求 您请求了两次
test1.php

首先,您可以通过在浏览器的地址栏中键入地址来请求它。(因此将不会设置
$\u POST[“getlat”];

然后,作为加载的一部分,您使用JavaScript再次请求它(这一次是使用一些数据)……但是您不会对响应执行任何操作

Ajax不会重写您当前的请求(因为该请求已经得到响应,所以无论如何都太晚了),它会生成一个新的请求


您需要将最后的PHP块移动到另一个文件中,并使用
$.ajax
中的URL。然后,您需要在ajax选项中添加一个
success
函数,并使用它来处理返回的响应。

您在哪里调用
getLocation()
?您是否希望ajax调用设置页面下方的
$\u POST[“getlat”]
$\u POST[“getlon”]
的值?如果是这样的话,那么ajax就不是这样works@PatrickEvans-你能帮我重写一下语法吗,谢谢。我认为你抄袭了别人问题的一些片段并期望它能起作用,对吗?重新编辑:你已经处理了我答案中描述的三个问题中的第一个,但忽略了其他两个。