【问题标题】:POST variable is null when using AJAX call使用 AJAX 调用时 POST 变量为空
【发布时间】:2019-07-19 10:31:07
【问题描述】:

我正在尝试POST 使用AJAX call 在下拉列表中选择的值。但是当从下拉列表中选择值时,POST 变量保持空白。

我使用ECHO method 来检查它是否返回POST 值。但它是空的。

下面是代码供参考:

Javascript(Jquery 和 Ajax):

<script>
$(document).ready(function(){
    $("#booking_date").change(function(){ //listen when the option change   
        var optionValue = $("#booking_date").val();  //get the new value

        $.ajax({
            url: "doctordetails.php", //php file which recive the new value and save it to the database
            data: { optionValue: optionValue },  //send the new value
            type: "POST"  ,                  //use POST method
            success: function(data) {
                console.log(optionValue);
            }
        });
    });
});
</script>   

HTML:

<div class="row">
  <div class="col-6">
    <div class="form-group">
      <input class="form-control" type="text" id="booking_date" name="booking_date" data-lang="en" data-min-year="2017" data-max-year="2020" data-disabled-days="10/17/2017,11/18/2017">
    </div>
  </div>
  <div class="col-6">
    <div class="form-group">
      <select class="form-control">
        <option value="">Select slot</option>>
        <?php
            require_once("dblogin.php");
        ?>
        <option value="<?php echo $_POST[" optionValue "]; ?>">
          <?php echo $_POST["optionValue"]; ?>
        </option>
      </select>
    </div>
  </div>
</div>

预期结果:

$_POST 应该从 booking_date 返回选定的值,$_POST 值将用于 SQL 查询。

【问题讨论】:

  • try onkeyup函数api.jquery.com/keyup
  • 感谢您的回复。试过但没用。
  • 试试这个 $("#booking_date").on("change paste keyup", function() { alert($(this).val()); });
  • @user3616545:从下拉列表中选择的值有一个警报,但 $POST["optionvalue"] 保持空白。
  • 你能展示你的处理过程吗?另外,您在哪里查看输出?

标签: php jquery ajax


【解决方案1】:

如果这是下拉列表,则 id 必须在选择框上。您在选择框以外的文本框上设置了 id booking_date。写成:

<select id="booking_date" class="form-control"> </select>

【讨论】:

  • 感谢您的回复。但是你的方法我不清楚。如何为选择框设置 ID 将允许 $_POST 变量不为空。我尝试了您的解决方案,但它不起作用。
【解决方案2】:

如果你想从 select(dropdown) 中取值,那么你必须在 &lt;select&gt; 而不是文本框 &lt;input&gt; 上设置 id

   <select id="booking_date" class="form-control">
      <option value="">Select slot</option>>
      <?php require_once("dblogin.php"); ?>
      <option value="<?php echo $_POST["optionValue"]; ?>">
            <?php echo $_POST["optionValue"]; ?>
      </option>

   </select>

关于脚本:

<script>
$(document).ready(function(){
    $("#booking_date").change(function(){ //listen when the option change   
        var optionValue = $(this).val();  //get the new value

        $.ajax({
            url: "doctordetails.php", //php file which recive the new value and save it to the database
            data: { getValue: optionValue },  //send the new value
            type: "POST"  ,                  //use POST method
            success: function(data) {
                console.log(data);
            }
        });
    });
});
</script>  

【讨论】:

  • 感谢您的回复。但是你的方法我不清楚。如何为选择框设置 ID 将允许 $_POST 变量不为空。我尝试了您的解决方案,但它不起作用。
  • 请您分享doctordetails.php 的代码并在不使用ajax 的情况下重试$("#booking_date").change(function(){ var optionValue = $(this).val(); console.log(optionValue );
  • @user2122925 你可以检查这个以便更好地理解link
  • 该值在控制台中正确显示。那部分没有问题。但是通过 POST 变量中的选择是一个挑战。它仍然是空的。
  • 将此data: { optionValue: optionValue } 更改为data: { getValue: optionValue } 和PHP 文件$_POST['getValue'] 并更改success: function(data) { console.log(data); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
相关资源
最近更新 更多