javascript - AJAX 将 javascript 变量发布到 php

标签 javascript php ajax

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

相关文章:

javascript - 如何使用 JavaScript 以动画方式绘制跟随移动元素的线条

javascript - 在 three.js 中使用 jquery

javascript - Firebase + REST + jquery 产生奇怪的键

javascript - 大型 sql 表 - 选择所有但使用 javascript/PHP 逐步显示

javascript - jQuery - 如果用户选择了特定复选框,则取消选中其他复选框

php - 您将如何前往 Zend Framework 项目中的购物车 "design"?

php - 如何在 symfony 中使用 bcrypt 密码加密添加管理员?

php - 原则 2 ODM 防止重复记录

javascript - 为什么我的数据表固定标题不起作用/

javascript - 如何区分 localStorage 与单击时存储每个文件?