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.

jskidd3
  • 4,609
  • 15
  • 63
  • 127

1 Answers1

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.

Community
  • 1
  • 1
Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
  • Thanks! If I wanted to say access the tripId inside the animals object, would I go about doing that like $_POST['tripId']? – jskidd3 Mar 18 '14 at 09:29