1

JavaScript jQuery post:

var animals = {
    animalsArray: [],
    tripId: <?php echo $_GET['id']; ?>
};

$('.student-check').each(function() {
    animals.animalsArray.push($(this).attr('id'));
});

var sendMe = JSON.stringify(animals);

$.post("saveChanges.php", sendMe, function(response) {
    console.log(response);
}, "json");

PHP handler:

echo json_encode(print_r($_POST, true));
// Array
// (
// )

Why is the array empty? I'm posting data but the response returns an empty array.

2
  • try json_encode($_POST, true); Commented Mar 18, 2014 at 9:27
  • What happens if you just print_r($_POST); Commented Mar 18, 2014 at 9:27

1 Answer 1

3

You are encoding the data as JSON, which isn't a format PHP handles natively for form submissions.

Remove var sendMe = JSON.stringify(animals); and pass animals to $.post instead of sendMe. jQuery will encode it using one of the standard formats supported by HTML forms and PHP.

Alternatively see this question for how to get the raw request body.


Also:

echo json_encode(print_r($_POST, true));

json_encode and print_r are both functions that take a data structure and express it as a string. Use one or the other, not both.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! If I wanted to say access the tripId inside the animals object, would I go about doing that like $_POST['tripId']?

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.