$ _POST ['variable']不起作用

时间:2018-06-20 09:27:57

标签: php jquery post http-post

我有一个带有一些select和textarea的html页面,它们没有被<form>标记包围,还有一个运行以下脚本的按钮:

function sendReservationData(){
    var partenzaSel = $( "#selPartenza" ).val();
    var partenzaTArea = $( "#textP" ).val();
    var destinazioneSel = $( "#selDestinazione" ).val();
    var destinazioneTArea = $( "#textD" ).val();
    var nPasseggeri = $( "#selPasseggeri" ).val();

    var baseURL = window.location.origin;
    var serviceURL = baseURL + window.location.pathname;    

    $.post(serviceURL, {'partenzaSel' : partenzaSel, 'partenzaTArea' : partenzaTArea, 'destinazioneSel' : destinazioneSel, 'destinazioneTArea' : destinazioneTArea, 'nPasseggeri' : nPasseggeri},
         function(response){
            location.reload();
         }   
    ); } 

我使用这种方式来构建url,因为我正在使用xamp,当我完成时,我必须将代码上传到不知道完整路径或正确url的university服务器中网站。 当我单击该按钮时,我想使用我向您显示的脚本发送的变量来启动事务并对数据库进行一些查询,以便查看我是否能够从select中收集数据。和textarea,在同一页面上的按钮之后,我编写了以下代码,这些代码将在与数据库交互时完成。

 <?php
$Partenza = $partenzaSel = $partenzaTArea = $destinazioneSel = $destinazioneTArea = $nPasseggeri = "";
if (isset($_POST['partenzaSel']) and isset($_POST['partenzaTArea']) and isset($_POST['destinazioneSel']) and isset($_POST['destinazioneTArea']) and isset($_POST['nPasseggeri']) ){

     $partenzaSel = $_POST['partenzaSel'];
     $partenzaTArea = $_POST['partenzaTArea'];
     $destinazioneSel = $_POST['destinazioneSel'];
     $destinazioneTArea = $_POST['destinazioneTArea'];
     $nPasseggeri = $_POST['nPasseggeri'];

     echo $partenzaSel + $partenzaTArea + $destinazioneSel + $destinazioneTArea + $nPasseggeri + "prova";
}                                                   
?>

回声向我显示任何内容,因此我尝试获取保存在javascript中的变量无效,并且我无法使用该值来继续工作。我错了吗?我能怎么做?谢谢您的帮助。

3 个答案:

答案 0 :(得分:1)

请从您的JavaScript中删除location.reload(),并将您的php更改为以下内容。

<?php
$Partenza = $partenzaSel = $partenzaTArea = $destinazioneSel = $destinazioneTArea = $nPasseggeri = "";
if (isset($_POST['partenzaSel']) and isset($_POST['partenzaTArea']) and isset($_POST['destinazioneSel']) and isset($_POST['destinazioneTArea']) and isset($_POST['nPasseggeri']) ){

     $partenzaSel = $_POST['partenzaSel'];
     $partenzaTArea = $_POST['partenzaTArea'];
     $destinazioneSel = $_POST['destinazioneSel'];
     $destinazioneTArea = $_POST['destinazioneTArea'];
     $nPasseggeri = $_POST['nPasseggeri'];

     echo $partenzaSel . $partenzaTArea . $destinazioneSel . $destinazioneTArea . $nPasseggeri . "prova";
     exit;
}                                                   
?>

这现在应该在接收到数据后退出脚本并显示输出。

答案 1 :(得分:1)

您的问题是您期望PHP(服务器端编码)在页面加载后处理某些事情,当您重新加载页面时,就像什么都没有发送给它一样,要么以表单形式发送,要么处理PHP响应使用JQuery并将其显示在页面上。 JQuery在浏览器端处于活动状态,并且只要打开页面即可起作用,PHP会在页面从Web服务器发送到浏览器之前进行处理。

制作php端:

`print json_encode($partenzaSel . $partenzaTArea . $destinazioneSel . $destinazioneTArea . $nPasseggeri . "prova");`

然后使用前面的jquery:

$.post(serviceURL, {'partenzaSel' : partenzaSel, 'partenzaTArea' : partenzaTArea, 'destinazioneSel' : destinazioneSel, 'destinazioneTArea' : destinazioneTArea, 'nPasseggeri' : nPasseggeri},
     function(response){
        data = JSON.parse(response);
        $("#responseDiv").text(data);
     }   
); }

,然后在网页上创建一个ID为“ responseDiv”的div,以便将文本放在该框中。

答案 2 :(得分:1)

我尝试过:

因为没有提供form code,所以我只替换了javascript中的测试数据。

问题原因,因为您在最终的+的PHP代码中使用.而不是echo,因此,由于此echo的响应,{ {1}},我认为由于0无法正常工作,因此将其视为javascript post callbackfailure

是的,即使我不理解使用此代码error,@ yunus-saha也是正确的。您可以使用jquery的location.reload()console.log函数。

HTML

append or text

PHP

<html>
   <body>   
     <form method='post' >

     <input type='submit' value='submit' onclick='sendReservationData();' />
     </form>

   <script type='text/javascript'  src="https://code.jquery.com/jquery-3.3.1.min.js"> 
    </script>
   <script type='text/javascript' >
        function sendReservationData(){
            var partenzaSel = 'partenzaSel';
            var partenzaTArea = 'partenzaTArea';
            var destinazioneSel = 'destinazioneSel';
            var destinazioneTArea = 'destinazioneTArea';
            var nPasseggeri = 'nPasseggeri';

           var baseURL = window.location.origin;
           var serviceURL = baseURL + window.location.pathname;    

       $.post('php3.php',{"partenzaSel" : partenzaSel, "partenzaTArea" : partenzaTArea, "destinazioneSel" : destinazioneSel,"destinazioneTArea" : destinazioneTArea, "nPasseggeri" : nPasseggeri}, function (data){
        console.log(data);
        });
       }
      </script>
    </body>
  </html>

enter image description here