[英]php shows empty array but ajax shows the data
我正在尝试使用AJAX在PHP中发送的数据,但是由于某种原因,该数组为空,我也没有从PHP或控制台中得到任何错误。 console.log(data)显示带有选择值的数组。 PHP之后是script.js所在的HTML。 的console.log
的index.php
<?php
error_reporting(-1);
$value1 = "";
$value2 = "";
print_r($_POST);
if (isset($_POST['date']) && isset($_POST['date'])) {
if (isset($_POST['date'])) {
echo "Yes, mail is set";
$value1 = $_POST['date'];
$value2 = $_POST['quantity'];
} else {
echo "No, mail is not set";
}
exit;
}
echo $value1;
echo $value2;
$canmakereservation = "https://www.planyo.com/rest/?method=can_make_reservation&api_key=YOURKEY&resource_id=110556&start_time=2018-04-25 09:00&end_time=2018-04-25 12:00&quantity=5";
$cleancanmakereservation = preg_replace("/ /", "%20", $canmakereservation);
$reservationavailable = file_get_contents("$cleancanmakereservation");
$reservationAvailable = json_decode($reservationavailable, true);
// echo "$cleancanmakereservation";
// var_dump($reservationAvailable);
?>
的script.js
$(document).ready(function(){
var date = "date";
var begin = "begin";
var eind = "eind";
var aantal = "aantal";
$('#datum').change(function() {
date = $("#datum").val();
console.log(date);
});
$('#beginTijd').change(function(){
begin =( $(this).val() );
console.log(begin);
});
$('#Tijdsduur').change(function(){
eind =( $(this).val() );
console.log(eind);
});
$('#aantalSloepen').change(function() {
aantal = ($(this).val());
console.log(aantal);
$.ajax({
type: "POST",
url: "index.php",
data: {
date: begin,
quantity: aantal
},
success: function(data) {
alert(data);
console.log(data);
}
});
});
});
第一! 您的代码中有重复的条件isset($_POST['date'])
(3次):
if (isset($_POST['date']) && isset($_POST['date'])) {
if (isset($_POST['date'])) {
echo "Yes, mail is set";
$value1 = $_POST['date'];
$value2 = $_POST['quantity'];
} else {
echo "No, mail is not set";
}
exit;
}
第二! 您应该删除exit;
然后再试一次!
第三:如果$value1
和$value2
不是字符串,则应检查变量类型。 echo
是错误的。 尝试return
编辑:
试试这个,对我有用! .php
目标:
$value1 = "";
$value2 = "";
if (isset($_POST['date']) && isset($_POST['quantity'])) {
echo "Yes, mail is set";
$value1 = $_POST['date'];
$value2 = $_POST['quantity'];
}
else {
echo "No, mail is not set";
}
echo $value1;
echo $value2;
ajax
:
result
检查AJAX请求中的ContentType标头。 可能是因为它以JSON的形式发送,而PHP并未将其反序列化到$ _POST数组中。 如本例所示 ,可能需要将其作为序列化表格数据发送。
根据我的经验(尽管在.NET中),如果服务器未从请求中挑选数据,通常是因为未正确设置ContentType标头来传递数据,因此服务器无法理解如何将其拔出。
编辑:您可以通过在传递给$.ajax
options对象中设置contentType
属性来控制它,默认值显然是'application/x-www-form-urlencoded; charset=UTF-8'
$.ajax
'application/x-www-form-urlencoded; charset=UTF-8'
,然后根据processData
属性将对象传递给data
属性时,默认行为是将其序列化为查询字符串,以适合默认的contentType。 资料来源: jQuery docs 。
所以我的错误看起来应该都匹配,尽管我通常喜欢明确指定这些属性以避免任何混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.