我的问题是:使用 AJAX,如何将 Javascript 中的变量传递给我的 PHP 代码?
我知道 PHP 是服务器端,Javascript 是客户端,我读过至少十几个问题,询问几乎或几乎相同的事情,但对于每个问题,我似乎都遗漏了一些东西,因为它们都不起作用。本质上,我使用地理定位来获取页面加载时用户的纬度和经度,并出于测试目的将其显示在页面上的相应 div 中。这部分工作正常。当我尝试将数据提交到我的 PHP 变量时,它无法连接或出现问题,或者我的代码在这部分完全不正确,我的问题就出现了。
这是我的完整测试页面“test.php”:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
x = navigator.geolocation;
x.getCurrentPosition(success, failure);
function success(position) {
var mylat = position.coords.latitude;
var mylng = position.coords.longitude;
$('#latit').html(mylat);
$('#longit').html(mylng);
}
function failure() {
$('#latit').html("<p>It didn't work</p>")
}
//sends javascript 'mylat' and 'mylng' from above to php script//
$.post("test.php", { lat: mylat , lng : mylng});
</script>
</head>
<body>
<!--only to validate that geolocation function works-->
<div id="latit"></div>
<div id="longit"></div>
<div id="splash">
<h2>Click the button</h2>
<form action="test.php" method="post">
<input type="submit" name="submit" value="Do the thing!" />
</form>
</div>
<?php
//used to validate passing of coordinates
if (isset($_POST['lat'])) {
echo $lat = $_POST['lat'];
}
if (isset($_POST['lng'])) {
echo $lng = $_POST['lng'];
}
?>
</body>
</html>
我试图将 JS 'mylat' 和 'mylng' 分别传递到 PHP 的 $lat 和 $lng 中。任何帮助将不胜感激,我对重复的问题表示歉意,我不确定是否有更好的方法来表达我的要求。
此外,如果有一种方法可以做到这一点而无需单击任何内容,那将是一个额外的好处,但我没有找到任何相关的东西。一般来说,我对 Web 开发/编程非常陌生,几乎没有 Javascript/jQuery/AJAX 经验。
最佳答案
首先,这一行:
$.post("test.php", { lat: mylat , lng : mylng});
应该在成功函数中。现在它在浏览器解析 <script>
标记后立即执行,但是您需要在获取位置时发出 POST
请求。
其次,您发出的 ajax
请求不会对已加载的页面产生影响,因为除非经过处理,否则其结果将消失。
您可以做的是在 body
元素上使用 $.load(),这会将当前 body
的内容替换为收到的内容:
$(document.body).load("test.php", { lat: mylat , lng : mylng});
虽然更好的方法是使用一个脚本来处理通过 ajax
发送的位置,然后将接收到的内容从 html 页面渲染到自定义元素中。
关于javascript - AJAX 将 javascript 变量发布到 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30244855/