Javascript 使用AJAX将值从JS发送到PHP
我尝试按照在中提供的代码将值从JavaScript发送到PHP 我得到了一个错误 注意:第25行的/Applications/XAMPP/xamppfiles/htdocs/test1.php中未定义的索引:getlat 注意:未定义的索引:第26行的/Applications/XAMPP/xamppfiles/htdocs/test1.php中的getlon 谁能帮我解决这个问题,谢谢 我的代码是: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
<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-你能帮我重写一下语法吗,谢谢。我认为你抄袭了别人问题的一些片段并期望它能起作用,对吗?重新编辑:你已经处理了我答案中描述的三个问题中的第一个,但忽略了其他两个。