PHP没有从$.ajax获取POST数据

PHP not getting POST data from $.ajax

本文关键字:获取 POST 数据 ajax PHP      更新时间:2023-09-26

我有一个JavaScript,当我的日期选择器失去焦点时(我也在常规提交按钮上尝试过),它会运行POST方法并运行脚本rent-fetch-pick-up-point.php。PHP运行,但是它没有通过if语句,因为我的it没有获得POST数据。日期选择器绑定到输入字段time-period-from

datepickerTo.blur(function(){
  if (selectedDateFrom.length > 0) {
    datepickerFrom.delay(500).queue(function(){
      $.ajax({
        type: "POST",
        url: "include/rent-fetch-pick-up-point.php",
        data: {action: selectedDateFrom},
        success: function(data) {
          $("#pick-up-point-container").html(data);
        }
      });
    });
  }
});

以下是PHP代码:

if (isset($_POST['time-period-from'])) {
  require '../include/connection.php';
  $dateFrom = $_POST['time-period-from'];
  $sql = "SELECT * FROM order WHERE $dateFrom BETWEEN date_from AND date_to";
  $result = mysqli_query($connection, $sql);
  $numRows = mysqli_num_rows($result);
  echo $sql; // For testing purposes
}

这是HTML:

  <input type="text" name="time-period-from" id="datepicker-from" class="datepicker"></p>

我也尝试使用$.post()而不是$.ajax(),但我遇到了同样的问题:

$.post("include/rent-fetch-pick-up-point.php", {name: selectedDateTo}, function(data) {
  $("#pick-up-point-container").text(data)
});

$_POST的键来自传递给data:选项的对象的键,而不是值最初来源的表单字段的名称。自从你使用:

data: { action: selectedDateFrom }

该值将在$_POST['action']中而不是在$_POST['time-period-from']中。所以你需要使用:

if (isset($_POST['action']))

和:

$dateFrom = $_POST['action'];

或者您可以将Javascript更改为:

data: { "time-period-from": selectedDateFrom }

我认为您的selectedDateFrom变量是导致您无法正确获取帖子信息的数组。

data: {action: $('#selectedDateFrom').serializeArray()}

然后您可以正确地获得表单数据

您没有在PHP端获取正确的变量:

if (isset($_POST['action'])) {
  require '../include/connection.php';
  $dateFrom = $_POST['action'];
  $sql = "SELECT * FROM order WHERE $dateFrom BETWEEN date_from AND date_to";
  $result = mysqli_query($connection, $sql);
  $numRows = mysqli_num_rows($result);
  echo $sql; // For testing purposes
}