I am trying to use the data that AJAX sends in PHP but for some reason says that the array is empty I also don't get any errors from PHP or in my console. the console.log(data) shows the array with with the values of the selects. After the PHP there is HTML where the script.js is. 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);
}
});
});
});
First! There are duplicate conditions isset($_POST['date'])
(3 times) in your code:
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;
}
Second! You should remove exit;
and try again!
Third: You should check your variable type, if your $value1
and $value2
is not a string, numeric. echo
is false. try with return
EDIT:
Try this, it worked for me! the .php
destination:
$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;
The ajax
:
The result
Check the ContentType header in the AJAX request. It could be that it is being sent as JSON and PHP doesn't deserializer that into the $_POST array. It may need to be sent as serialized form data, like in this example .
In my experience (albeit in .NET), if data isn't being picked out of the request by the server it's usually that the ContentType header isn't set correctly for how you're passing the data so the server doesn't understand how to pull it out.
Edit: You can control this by setting contentType
property in options object passed to $.ajax
, the default is apparently 'application/x-www-form-urlencoded; charset=UTF-8'
'application/x-www-form-urlencoded; charset=UTF-8'
and when you pass an object to the data
property, according to the processData
property, the default behaviour is to serialize this into a query string, fitting the default contentType. Source: jQuery docs .
So my mistake, looks like that should all be matching up, though I do usually like to be explicit with specifying these properties to avoid any confusion.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.