繁体   English   中英

AJAX将javascript变量发布到php

[英]AJAX to post javascript variable to php

我的问题是:使用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页面的自定义元素中。

名为“成功”的函数是定义变量myLat和myLng的地方。 当您向服务器发出POST请求时,您试图传递变量的值,但是没有任何结果,对吗? 这样做的原因是因为您的发布请求无权访问该功能的范围。

尝试将$ .post请求移到成功函数中,使其内容如下:

function success(position) {
    var mylat = position.coords.latitude;
    var mylng = position.coords.longitude;
    $('#latit').html(mylat);
    $('#longit').html(mylng);
    $.post("test.php", { lat: mylat , lng : mylng});
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM