0

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.

23tux
  • 12,371
  • 11
  • 76
  • 158
  • 1
    not same issue? http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascript – Nostalgie Feb 14 '14 at 12:40
  • Unfortunately no. I can reach the server, and I get every output back, but the request vars from PHP are empty. – 23tux Feb 14 '14 at 12:42
  • Hmm why stringify? You can just post with data: { foo: "bar" }, don't know if it will make a difference though. – Esko Feb 14 '14 at 12:51
  • I tried it without stringify, same result – 23tux Feb 14 '14 at 13:35

1 Answers1

1

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
)
Mostafa Shahverdy
  • 2,607
  • 1
  • 26
  • 48
  • Thanks for your answer. I tried it without the `dataType` and with and without stringify. Unfortunately, I still get no results in PHP when looking at `file_get_contents("php://input")`. Any other idea? – 23tux Feb 14 '14 at 13:36