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

4
  • See stackoverflow.com/a/18867369 Commented Feb 16, 2015 at 14:09
  • Make sure to watch the request / response in your browser's console, it will give you a lot of information on what is going on. Commented Feb 16, 2015 at 14:12
  • 2
    Why do you stringify your data? Keep it as an object. Right now, PHP receives a string, not an object. So it can't iterate over it as key/values. Commented Feb 16, 2015 at 14:14
  • file_get_contents('php://input') correctly works, but it's not satisfactory imho. See my edit Commented Feb 16, 2015 at 14:35

1 Answer 1

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
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.