Publication de JSON avec jquery ajax à PHP
J'ai un simple fichier php qui décoder ma chaîne json, passé par l'ajax, et le cachet du résultat, mais je ne peux pas garder le $_POST
variable, pourquoi???
J'essaie de les inspecter avec fireBug et je peux voir que la requête POST est envoyé correctement, lorsque le php script est appelé, il répond Noooooooob pour moi, il semble que tout POST variable est définie.
Tout ce que je veux, c'est mon array =)
Chaîne JSON généré par JSON.stringify
:
[
{
"id":21,
"children":[
{
"id":196
},
{
"id":195
},
{
"id":49
},
{
"id":194
}
]
},
{
"id":29,
"children":[
{
"id":184
},
{
"id":152
}
]
},
...
]
JavaScript
$('#save').click(function() {
var tmp = JSON.stringify($('.dd').nestable('serialize'));
//tmp value: [{"id":21,"children":[{"id":196},{"id":195},{"id":49},{"id":194}]},{"id":29,"children":[{"id":184},{"id":152}]},...]
$.ajax({
type: 'POST',
url: 'save_categories.php',
dataType: 'json',
data: {'categories': tmp},
success: function(msg) {
alert(msg);
}
});
});
save_categories.php
<?php
if(isset($_POST['categories'])) {
$json = $_POST['categories'];
var_dump(json_decode($json, true));
} else {
echo "Noooooooob";
}
?>
source d'informationauteur The_Guy | 2013-11-14
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne si vous supprimez
dataType: 'json'
juste testé.type de données est json, donc jQuery postes de ce:
Ce n'est pas la norme urlencoded, et donc $_POST est vide.
Vous pouvez définir les données de votre structure complexe, et jQuery va coder correctement:
Et en php:
$categories = json_decode(file_get_contents('php://stdin'));
Essayez ceci:
J'ai changé juste cette ligne:
parce que c'est la façon, la façon dont vous avez à écrire des données. Je l'ai testé, son travail...
c'est un travail pour moi, vous pouvez essayer cette.
JavaScript
$('#save').click(function() {
$.ajax({
type: 'POST',
contentType: 'application/json',
url: 'save_categories.php',
dataType: 'json',
data: JSON.stringify({'categories': $('.dd').nestable('serialize')}),
success: function(msg) {
alert(msg);
}
});
});
vous devez écrire le code ci-dessous sur save_categories.php
$_POST est pré-rempli avec les données du formulaire.