Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP未从$.ajax获取POST数据_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript PHP未从$.ajax获取POST数据

Javascript PHP未从$.ajax获取POST数据,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一个JavaScript,它在我的日期选择器失去焦点后运行POST方法(我也在常规的提交按钮上尝试了这个方法),并运行脚本rent fetch pick point.php。PHP运行,但是它没有通过if语句,因为我的it没有获取POST数据。日期选择器与输入字段时间段相关联 datepickerTo.blur(function(){ if (selectedDateFrom.length > 0) { datepickerFrom.delay(500).queue(fu

我有一个JavaScript,它在我的日期选择器失去焦点后运行POST方法(我也在常规的提交按钮上尝试了这个方法),并运行脚本
rent fetch pick point.php
。PHP运行,但是它没有通过if语句,因为我的it没有获取POST数据。日期选择器与输入字段
时间段相关联

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>

我认为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
}

$\u POST
的键来自传递给
数据:
选项的对象的键,而不是值最初来自的表单字段的名称。由于您使用了:

data: { action: selectedDateFrom }
该值将位于
$\u POST['action']
,而不是
$\u POST['time-period-from']
。因此,您需要使用:

if (isset($_POST['action']))
以及:

或者您可以将Javascript更改为:

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

您确实意识到您是在
操作
中发送数据,而不是在
时间段中发送的
?您的发布
操作
,而不是
时间段中发送的
。。。请尝试:
$\u POST['action']
您的代码易受攻击。表示了解的语句。即使是这样也不安全@夏洛特德诺伊斯哦,这就是问题所在!我不太明白我应该如何或从哪里获取POST数据,但现在事情变得更清楚了。非常感谢。你为什么认为它是一个数组?你使用selectedDateFrom.length导致我认为它是数组或字符串。我猜它是一个字符串,可能是
$(“#selectedDateFrom”).val()
。我不确定你为什么要在单个元素上使用
.serializedArray()
。$(“#日期选择器from”).val()这个过程你可以很容易地得到这个数据,我现在就开始工作了。谢谢你详细解释。
$dateFrom = $_POST['action'];
data: { "time-period-from": selectedDateFrom }