[英]PHP not getting POST data from $.ajax
I have a JavaScript that runs a POST method once my datepicker has been out of focus (I also tried this on a regular submit button) and runs the script rent-fetch-pick-up-point.php
. 我有一个JavaScript,一旦我的datepicker失去焦点(我也在常规rent-fetch-pick-up-point.php
按钮上尝试过此操作),它就会运行POST方法并运行脚本rent-fetch-pick-up-point.php
。 The PHP runs, however it doesn't get past the if-statement because my it's not getting the POST data. PHP可以运行,但是它不能通过if语句,因为它没有获取POST数据。 The datepicker is tied to a input field time-period-from
日期选择器绑定到输入字段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);
}
});
});
}
});
Here is the PHP code: 这是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
}
And here's the HTML: 这是HTML:
<input type="text" name="time-period-from" id="datepicker-from" class="datepicker"></p>
I also tried using $.post() instead of $.ajax(), but I ran into the same issue: 我也尝试使用$ .post()而不是$ .ajax(),但是遇到了同样的问题:
$.post("include/rent-fetch-pick-up-point.php", {name: selectedDateTo}, function(data) {
$("#pick-up-point-container").text(data)
});
The keys of $_POST
come from the keys of the object you pass to the data:
option, not the names of the form fields where the values originally came from. $_POST
的键来自传递给data:
选项的对象的键,而不是值最初来自的表单字段的名称。 Since you used: 由于您使用过:
data: { action: selectedDateFrom }
the value will be in $_POST['action']
, not $_POST['time-period-from']
. 该值将在$_POST['action']
,而不是$_POST['time-period-from']
。 So you need to use: 因此,您需要使用:
if (isset($_POST['action']))
and: 和:
$dateFrom = $_POST['action'];
or you could change the Javascript to: 或者您可以将Javascript更改为:
data: { "time-period-from": selectedDateFrom }
I think your selectedDateFrom variable is array that cause your post info can't you get properly . 我认为您的selectedDateFrom变量是数组,导致您的帖子信息无法正确获取。
data: {action: $('#selectedDateFrom').serializeArray()}
then you get your form data properly 然后您可以正确获取表单数据
You aren't grabbing the right variable on the PHP side: 您没有在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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.