代码之家  ›  专栏  ›  技术社区  ›  TwasAGoodTaco

尝试将js变量发送到php文件

  •  0
  • TwasAGoodTaco  · 技术社区  · 6 年前

    当用户点击php主页上的“FINISH”时,我试图将js变量从我的js文件发送到另一个php文件。以下是我目前的代码:

    地图php

    <form  action="./finalmap.php">
       <input class="finish-button" type="submit" value="FINISH" onclick="sendData();" />
    </form>
    

    地图js公司

    function sendData() {
        $.ajax({
            method: "POST",
            url: "../finalmap.php",
            data: {
                selectedLoc: selectionArray, 
                startLoc: start,
                endLoc: end,
                dist: distance,
                locTypes: allLocations
            },
            beforeSend : function(http) { },
            success : function(response,status,http) {
                alert(response);
            },
            error : function(http,status,error) {
                $('.response').html("<span class='error'>Something went wrong</span>");
                $(".response").slideDown();
            }
        });
    }
    

    最终地图。php

    <?php
        $data = $_POST['data'];
        echo $data;
    ?>
    

    帖子成功了,我可以在最终地图中看到内容(我的代码)。php从alert命令。当我试着安慰的时候。日志 $data 在最终地图中。php,它为空/null。

    我的目标是将数据发送到finalmap。php并重定向到它。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Tim Morton    6 年前

    要解决这个问题,您必须将您正在测试的内容一次减少到一件事情。您的代码有错误且不完整。因此,让我们首先从错误开始:如果使用AJAX,则不希望HTML以常规方式提交表单。如果您得到页面刷新,您的AJAX就无法工作。

    <button type="button" id="submit-button">FINISH</button>
    

    注意,否 <form> 是需要的;您正在通过AJAX提交。

    接下来,您需要确保正在执行ajax功能(因为您正在使用 $.ajax ,我想您已经加载了JQuery):

    <button type="button" id="submit-button">FINISH</button>
    <script>
    
        // all listener functions need to wait until DOM is loaded
        $(document).ready(function() {
    
          // this is the same idea as your onclick="sendData();
          // but this separates the javascript from the html
          $('#submit-button').on('click', function() {
            console.log('hello world');
          });
        });
    </script>
    

    您可以使用web控制台查看控制台。记录消息。

    现在,通过一篇简单的帖子来尝试ajax命令:

    <button type="button" id="submit-button">FINISH</button>
    <script>
    
        // all listener functions need to wait until DOM is loaded
        $(document).ready(function() {
    
          $('#submit-button').on('click', function() {
            $.ajax({
              method: "POST",
              // "./finalmap.php" or "../finalmap.php"?
              url: "../finalmap.php",
              data: {foo: 'bar'},
              success: function(response){ 
                console.log('response is: ');
                console.log(response);
              }
            });
          });
        });
    </script>
    

    最终地图。php

    <?php echo 'This is finalmap.php'; 
    

    如果你看到 This is finalmap.php 按下按钮后,在web控制台中,您可以尝试发送数据。

    最终地图。php

    <?php
        echo 'You sent the following data: ';
        print_r($_POST);
    

    看到我们要做什么了吗?吃大象的方法是一次咬一口。

        2
  •  0
  •   Leon Gamerman171 Zhang    6 年前

    /最终地图。php不是一件事。

    相反,代码必须如下所示:

    <form  action="/finalmap.php">
       <input class="finish-button" type="submit" value="FINISH" onclick="sendData();" />
    </form>
    

    尝试使用此选项。

    编辑:哎呀,对不起,我刚刚进行了CPED和粘贴。