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

时间:2018-04-28 18:31:48

标签: javascript php ajax post

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

map.php

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

map.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();
        }
    });
}

finalmap.php

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

发布成功,我可以通过alert命令查看finalmap.php中的内容(我的代码)。当我在finalmap.php中尝试console.log $data时,它是空的/ null。

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

2 个答案:

答案 0 :(得分:0)

./ finalmap.php不是一件事。

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

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

请尝试使用此功能。

编辑:OOPS抱歉,我只是CPED和PASTED。

答案 1 :(得分:0)

要解决此问题,您必须一次减少您测试的内容。您的代码有错误且不完整。因此,让我们先从错误开始:如果您使用的是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控制台查看console.log消息。

现在,用一个简单的帖子试试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>

finalmap.php

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

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

finalmap.php

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

看看我们在哪里?吃大象的方法一次咬一口。