I am using jQuery to post a json object to my php application.
jQuery.post("save.php",JSON.stringify(dataToSend), function(data){ alert(data); });
The json string as pulled from firebug looks like this
{ "data" : [ { "contents" : "This is some content",
"selector" : "DIV.subhead"
},
{ "contents" : "some other content",
"selector" : "LI:nth-child(1) A"
}
],
"page" : "about_us.php"
}
In php I am trying to turn this into an associative array.
My php code so far is
<?php
$value = json_decode(stripcslashes($_POST));
echo $value['page'];
?>
The response to the ajax call should be "about_us.php" but it comes back blank.
Pass the second argument as true if you want the associative array otherwise it will keep returning object.
It looks like jQuery might encode a javascript object in urlencoded form then would be populated into $_POST. At least from their examples. I'd try passing in your object into
post()
without stringifying it.If you want to use json data as an associative array, you can try as following:
Try:
since
json_decode
's default behaviour is to return an object of typestdClass
.Alternatively, set the second optional
$assoc
argument totrue
:You can avoid to use
JSON.stringify
andjson_decode
:And:
Update:
... but if your really want to use them, then:
And:
$_POST
will not be populated if the request body is not in the standard urlencoded form.Instead, read from the read-only
php://input
stream like this to get the raw request body: