Lire un tableau associatif de json dans $_POST
J'utilise jQuery pour afficher un objet json pour mon application php.
jQuery.post("save.php",JSON.stringify(dataToSend), function(data){ alert(data); });
La chaîne json comme tiré de firebug ressemble à ceci
{ "data" : [ { "contents" : "This is some content",
"selector" : "DIV.subhead"
},
{ "contents" : "some other content",
"selector" : "LI:nth-child(1) A"
}
],
"page" : "about_us.php"
}
En php je suis en train de transformer cela en un tableau associatif.
Mon code php pour l'instant est
<?php
$value = json_decode(stripcslashes($_POST));
echo $value['page'];
?>
La réponse à l'appel ajax devrait être "about_us.php" mais il est à nouveau vide.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez éviter d'utiliser
JSON.stringify
etjson_decode
:Et:
Mise à jour:
... mais si vous voulez vraiment utiliser, puis:
Et:
$_POST
ne sera pas remplie si le corps de la requête n'est pas dans la norme urlencoded forme.Au lieu de cela, lire à partir de la lecture seule
php://input
stream de ce genre pour obtenir le raw du corps de la requête:file_get_contents('php://input')'
de processus json_encoded de données (sur mon php-scrpt hébergés sur heroku), il se plaint, il & souhaitez-moi de mettre'always_populate_raw_post_data' to '-1'
. Mais Si je fais ça Il ne peut pas remplir les données dans$value
. Que faire maintenant?Passer le deuxième argument true si vous souhaitez que le tableau associatif sinon, il continuera à retourner l'objet.
$_POST
est toujours un tableau, etstripslashes
sera jamais accepter un tableau comme argument. Le code que vous avez donné est garanti pour lancer un avertissement et définir$value
ànull
, quel que soit le corps POST.Essayer:
depuis
json_decode
le comportement par défaut est de retourner un objet de typestdClass
.Vous pouvez également définir la seconde, facultative,
$assoc
argumenttrue
:Il ressemble à jQuery pourraient coder un objet javascript dans urlencoded formulaire ci pourraient ensuite être placés dans $_POST. Au moins à partir de leur exemples. J'avais essayer de passer dans votre objet dans
post()
sans stringifying il.Si vous souhaitez utiliser des données json comme un tableau associatif, vous pouvez essayer comme suit: