I'm hesitating to ask, but I haven't found any solution so far. I always thought, it could just be a silly mistake, but I can't find it.
I have a jQuery 2.1 ajax POST to my PHP server:
$.ajax({
url: "http://my-server.com/post-example.php",
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify({ foo: "bar" }),
success: function(data) {
console.log("SUCCESS");
},
});
Safari tells me in the console, that the request data is correct and was sent. When trying to access foo
inside PHP, everything is empty:
var_dump($_POST); // array(0)
$foo = file_get_contents("php://input");
var_dump($foo); // string(0)
When I try to POST with curl, I get results in php://input
:
curl -v -X POST -H "Content-Type: application/json" -d '{"foot":"bar"}' http://www.my-server.de/post-example.php
// on PHP side
var_dump($_POST); // array(0)
$foo = file_get_contents("php://input");
var_dump($foo); // string(13) "{"foo":"bar"}"
I can't find a reason why. Maybe there is something wrong in my PHP configuration, but I already set the always_populate_raw_post_data = On
in my php.ini
.
I also tried without contentType
and dataType
, same effect.
You are sending string and not JSON, fix it like this:
$.ajax({
url: "res.php",
type: "POST",
data: { foo: "bar" },
success: function(result) {
console.log(result);
}
});
print_r($_POST)
returned this:
Array
(
[foo] => bar
)
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.