3

I have a problem that puzzles me. I have an ajax function that sends a json object, and I see the JSON parsed in the F12 Chrome Headers, and I receive the success alert.

$(document).ready(function() {
        var test = {'bob':'foo','paul':'dog'};
        $.ajax({
            url: "test.php",
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(test),
            success: function(data) {
                alert("Bien: " + data);
            },
            failure: function(errMsg) {
                alert("Mal: " + errMsg);
            }
        });
});

But in my PHP page I cannot see any POST, anything. I can see that my post is received but anything else:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   echo "post"; //Result 'post'
}

foreach( $_POST as $stuff ) {
    echo $stuff; //Nothing at all
}

print_r(json_decode($_POST["data"], true)); // Undefined index: data

In the same code I use

$.post( "test.php", { data: { name: "John", time: "2pm" } } );

and works, then is something related with the code, but I cannot really see waht is it.

Thank you for your help!

3
  • possible duplicate of handle json request in PHP Commented Mar 12, 2014 at 10:30
  • 1
    Try without the JSON.stringify in your ajax call. Commented Mar 12, 2014 at 10:31
  • What happens when you check $_POST['bob']? Besides, you shouldn't need json.stringify. Commented Mar 12, 2014 at 10:34

1 Answer 1

5

try this instead

$results = json_decode(file_get_contents('php://input'));
echo $results->bob //Result foo
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.