0

I'm trying to serialize an HTML form and to send it via Jquery with a POST action, currently I have the following Jquery:

var dataToSend = {
                    'name': 'person',
                    'description': 'very nice person'
                }

                $.ajax({
                    type: "POST",
                    url: "http://localhost/rest/PersonPOST.php",
                    data: JSON.stringify(dataToSend)
                    //contentType: 'application/json',
                    //dataType: 'json'
                });

on the server side I have a PHP script which prints what it receives, so far I managed to receive a request without the $_POST variable. If I decomment contentType and dataType nothing changes...

<?php

error_log("START POST");
foreach ($_POST as $key => $entry)
{
    if (is_array($entry))
    {
        foreach ($entry as $value)
        {
            error_log($key . ": " . $value . "<br>");
        }
    }
    else
    {
        error_log($key . ": " . $entry . "<br>");
    }
}

?>

What is wrong with the above ajax request?

EDIT: file_get_contents('php://input') at the server side correctly prints the content which should be inside $_POST variable. Can anyone answer how to normally put this inside the $_POST variable or why it's not possible? thank you

sarah.ferguson
  • 3,167
  • 2
  • 23
  • 31

1 Answers1

3

You dont need to stringify since you are already manually creating a JSON object. Try it like this:

var dataToSend = {
    'name': 'person',
    'description': 'very nice person'
};
$.ajax({
    type: "POST",
    url: "http://localhost/rest/PersonPOST.php",
    data: dataToSend
});
CodeGodie
  • 12,116
  • 6
  • 37
  • 66