gpt4 book ai didi

javascript - AJAX 将 javascript 变量发布到 php

转载 作者:行者123 更新时间:2023-12-03 10:08:35 26 4
gpt4 key购买 nike

我的问题是:使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com