salut tout le monde,
je bute en ce moment sur un problème de désérialisation d'objets par json..
Je m'explique :
je voudrais afficher une liste d'utilisateurs qui ont enregistré leur nom et leur age dans un formulaire, et cela par ajax et dans la même page.
A chaque saisie de données dans le formulaire, je récupére ces données, les encode par json les passe par un appel json à un fichier qui les traite, en créant un objet à partir de ces données.
Ce script sérialise alors cet objet, puis stocke cet objet dans un tableau, et stocke ce tableau dans une variable session. Enfin j'encode ce tableau pour le renvoyer à la fonction appelante json du formulaire...Ooouuuf !!!
Le problème, c'est que je n'arrive plus à traiter ce tableau une fois revenu dans la fonction success de mon $.post(..)..
Voici le code d'envoi de mes données par ajax :
Firebug me renvoie dans la requete post la sortie suivante :
q traiter
user {"nom":"carcy","age":"12121"}
Source
user=%7B%22nom%22%3A%22carcy%22%2C%22age%22%3A%2212121%22%7D&q=traiter
jusque-la, tout va bien !
voici mon code du traitement de mes données formulaire :
A ce niveau-là, firebug m'affiche ceci :
["O:10:\"class_user\":2:{s:16:\"\u0000class_user\u0000_nom\";s:5:\"carcy\";s:16:\"\u0000class_user\u0000_age\";s:5:\"12121\";}"]
soit mon tableau encodé d'objet sérialisés...
Je n'arrive plus ensuite à récupérer les données de ce tableau, soit chaque objet le constituant, donc à désencoder le tableau passé en paramètre (ici data, qui récupère donc le json_encode($array_users); de ma fonction de traitement), puis à désérialiser les objets de ce tableau..
Quelqu'un aurait-il une idée du process de désencodage json et de désérialisation d'un tableau d'objets sérialisés ? là, je suis cplt en panne, j'avoue..
merci d'avance à tous
Modifié par ishmar (27 Mar 2010 - 11:51)
je bute en ce moment sur un problème de désérialisation d'objets par json..
Je m'explique :

je voudrais afficher une liste d'utilisateurs qui ont enregistré leur nom et leur age dans un formulaire, et cela par ajax et dans la même page.
A chaque saisie de données dans le formulaire, je récupére ces données, les encode par json les passe par un appel json à un fichier qui les traite, en créant un objet à partir de ces données.
Ce script sérialise alors cet objet, puis stocke cet objet dans un tableau, et stocke ce tableau dans une variable session. Enfin j'encode ce tableau pour le renvoyer à la fonction appelante json du formulaire...Ooouuuf !!!
Le problème, c'est que je n'arrive plus à traiter ce tableau une fois revenu dans la fonction success de mon $.post(..)..
Voici le code d'envoi de mes données par ajax :
$(document).ready(function() {
.....
$("#formconvert").validate({
.....
submitHandler: function(form) {
//show the loading sign
$('#loading').show();
var user = new Object();
// Retrieve the title and ISBN
user.nom = $('#nom').val();
user.age = $('#age').val();
// Use the jquery-json plugin to convert the form data to JSON
var userJSON = $.toJSON(user);
$.post(
'controller.php',
{user: userJSON, q: "traiter"},
function success(data) {
// $('#resultat').empty().append(data.length);
$('#loading').hide();
}
,"json");
}
Firebug me renvoie dans la requete post la sortie suivante :
q traiter
user {"nom":"carcy","age":"12121"}
Source
user=%7B%22nom%22%3A%22carcy%22%2C%22age%22%3A%2212121%22%7D&q=traiter
jusque-la, tout va bien !
voici mon code du traitement de mes données formulaire :
$user_form = json_decode($_POST['user'], true);
$array_users = array ();
if ( (preg_match ("#^[\w]+$#",$user_form['nom']) ) &&
(preg_match ("#^[\d]+$#",$user_form['age'])) ) {
$user = new class_user($user_form['nom'],$user_form['age']);
$array_users = (isset($_SESSION['users'])) ? $_SESSION['users'] : array();
$array_users[] = serialize($user);
$_SESSION['users'] = $array_users;
// encode et renvoie la valeur par json
echo json_encode($array_users);
... }
A ce niveau-là, firebug m'affiche ceci :
["O:10:\"class_user\":2:{s:16:\"\u0000class_user\u0000_nom\";s:5:\"carcy\";s:16:\"\u0000class_user\u0000_age\";s:5:\"12121\";}"]
soit mon tableau encodé d'objet sérialisés...
Je n'arrive plus ensuite à récupérer les données de ce tableau, soit chaque objet le constituant, donc à désencoder le tableau passé en paramètre (ici data, qui récupère donc le json_encode($array_users); de ma fonction de traitement), puis à désérialiser les objets de ce tableau..
Quelqu'un aurait-il une idée du process de désencodage json et de désérialisation d'un tableau d'objets sérialisés ? là, je suis cplt en panne, j'avoue..
merci d'avance à tous

Modifié par ishmar (27 Mar 2010 - 11:51)