Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2850 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [resolu] comment récupérer le contenu d'un json avec jquery

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] comment récupérer le contenu d'un json avec jquery

n°2108661
domi_bu
Posté le 29-10-2011 à 09:18:17  profilanswer
 

Bonjour
 
je découvre l'ajax depuis hier soir très tard et là je sèche sur l'interprétation du retour.  
 
J'arrive à interroger le serveur et à obtenir une réponse de type "json". Donc quand je fais ceci :
 

Code :
  1. function showUser(str)
  2. {
  3.        var reponse = $.ajax({
  4.            type: "GET",
  5.            dataType:"json",
  6.            url: "controleur/etablissement/getuser.php",
  7.            data: "id_personne="+str,
  8.            success: parse(reponse)
  9.        });
  10. }


 
et bien ça me renvoie ceci :
 

Code :
  1. {"id_personne":"4","0":"4","id_civilite":"Mr","1":"Mr","nom":"AZAZ","2":"AZAZ","nom_jeune_fille":"","3":"","prenom":"","4":"","sexe":null,"5":null,"num_ss":null,"6":null,"date_naissance":null,"7":null,"commentaire":"","8":"","photo":null,"9":null,"date_creation":"23\/10\/2011 08:59","10":"23\/10\/2011 08:59","auteur_creation":"mburea27","11":"mburea27","date_maj":"23\/10\/2011 12:57","12":"23\/10\/2011 12:57","auteur_maj":null,"13":null,"id_role":"ADMIN","14":"ADMIN","id_etablissement":"1","15":"1","adresse_ligne1":"adresse 1","16":"adresse 1","adresse_ligne2":"","17":"","adresse_ligne3":"","18":"","adresse_ligne4":"","19":"","code_postal":"59190","20":"59190","commune":"hazeb","21":"hazeb","id_code_pays":"FR","22":"FR","login":null,"23":null}


 
Et c'est parfait , donc mon navigateur et le serveur communiquent bien.  
 
Ma question est comment je fais ensuite côté navigateur pour récupérer le contenu de chaque variable et les mettre dans mon formulaire.
 
J'ai tenté une fonction "parse(reponse)" en cas de success de l'appel mais ça marche pas :
 

Code :
  1. function parse(str)
  2. {
  3. var obj = jQuery.parseJSON(str);
  4. alert( obj.nom );
  5. }


 
 
Quelqu'un pourrait m'aider et m'expliquer ce qui ne va pas ? Je ne dois pas être très loin je pense. Merci à tous.
 
Dominique


Message édité par domi_bu le 30-10-2011 à 08:10:25

---------------
Domi
mood
Publicité
Posté le 29-10-2011 à 09:18:17  profilanswer
 

n°2108728
SICKofitAL​L
misanthrope
Posté le 30-10-2011 à 02:43:49  profilanswer
 

dans ce code :

Code :
  1. function showUser(str)
  2. {
  3.        var reponse = $.ajax({
  4.            type: "GET",
  5.            dataType:"json",
  6.            url: "controleur/etablissement/getuser.php",
  7.            data: "id_personne="+str,
  8.            success: parse(reponse)
  9.        });
  10. }


il faut juste que tu passes "parse", et non "parse (reponse)" ce qui execute la fonction.
 
Dans parse, et en accord avec l'API de jQuery ( http://api.jquery.com/jQuery.ajax/ [...] x-settings ), le premier param est data, donc dans ton cas directement ton json, pas besoin de faire un parseJSON dessus.
 
A essailler


---------------
We deserve everything that's coming...
n°2108740
domi_bu
Posté le 30-10-2011 à 08:10:05  profilanswer
 

ça fonctionne ! merci SICKofitALL
 
je fais ceci et ça fonctionne :  
 

Code :
  1. var reponse = $.ajax({
  2.         type: "GET",
  3.         dataType:"json",
  4.         url: "controleur/etablissement/getuser.php",
  5.         data: "id_personne="+str,
  6.         complete: vider_formulaire(),
  7.         success: function fill_form(reponse){
  8.                // alert("nom="+reponse.nom);
  9.        
  10.        
  11.                $("#id_personne" ).val(reponse.id_personne);
  12.                $("#id_civilite" ).val(reponse.id_civilite);
  13.                $("#nom" ).val(reponse.nom);
  14.                $("#prenom" ).val(reponse.prenom);
  15.                $("#adresse_ligne1" ).val(reponse.adresse_ligne1);
  16.                $("#adresse_ligne2" ).val(reponse.adresse_ligne2);
  17.                $("#adresse_ligne3" ).val(reponse.adresse_ligne3);
  18.                $("#adresse_ligne4" ).val(reponse.adresse_ligne4);
  19.                $("#code_postal" ).val(reponse.code_postal);
  20.                $("#commune" ).val(reponse.commune);
  21.                $("#id_code_pays" ).val(reponse.id_code_pays);
  22.                $("#id_role" ).val(reponse.id_role);
  23.                $("#titre_formulaire" ).html("Modifier une personne" );
  24.                } // fermeture fonction de remplissage formulaire
  25.     });        // fermeture appel ajax


 
encore une dernière question : vaut il mieux faire comme j'ai fait ? ou plutôt créer une fonction en dehors de l'appel (pour plus de lisibilité). Que fais tu habituellement ?
 
Dominique

n°2108752
SICKofitAL​L
misanthrope
Posté le 30-10-2011 à 11:29:33  profilanswer
 

Perso je passe les fonctions sous la forme de callback, càd que je met juste le nom de la fonction, sans les parenthèses.
Si tu les mets, ca execute la fonction direct, ce qui est en général pas ce que tu veux.
D'ailleurs dans ton code, dans "complete", tu executes cash "vider_formulaire", alors que à mon avis tu voudrais plutot que lorsque la requete ajax est complete, il execute à ce moment cette fonction. En clair, vire tes parentheses ;)
 
Ca donnerait un truc comme ca :

Code :
  1. var vider_formulaire = function ()
  2.   {
  3.     // ton code...
  4.   },
  5.   fill_form = function (reponse)
  6.     {
  7.                if (!reponse) {  // on teste reponse, si il est undefined on fait rien
  8.                   return false;
  9.                }
  10.                $("#id_personne" ).val(reponse.id_personne);
  11.                $("#id_civilite" ).val(reponse.id_civilite);
  12.                $("#nom" ).val(reponse.nom);
  13.                $("#prenom" ).val(reponse.prenom);
  14.                $("#adresse_ligne1" ).val(reponse.adresse_ligne1);
  15.                $("#adresse_ligne2" ).val(reponse.adresse_ligne2);
  16.                $("#adresse_ligne3" ).val(reponse.adresse_ligne3);
  17.                $("#adresse_ligne4" ).val(reponse.adresse_ligne4);
  18.                $("#code_postal" ).val(reponse.code_postal);
  19.                $("#commune" ).val(reponse.commune);
  20.                $("#id_code_pays" ).val(reponse.id_code_pays);
  21.                $("#id_role" ).val(reponse.id_role);
  22.                $("#titre_formulaire" ).html("Modifier une personne" );
  23.     },
  24.   reponse = $.ajax({
  25.         type: "GET",
  26.         dataType:"json",
  27.         url: "controleur/etablissement/getuser.php",
  28.         data: "id_personne="+str,
  29.         complete: vider_formulaire,
  30.         success: fill_form
  31.     });        // fermeture appel ajax


 
Au passage, je vois que tu utilises des alerts. Oublies ca et passe à Firebug si tu es sous firefox ou aux outils de developpements intégrés à ton browser (touche F12 pour les ouvrir sous Chrome, IE et Opera aussi je crois).
Fais des console.log pour afficher tes objets sous forme de chaines, ou mieux des consoles.dir si c'es comme chez toi du JSON
-> http://getfirebug.com/wiki/index.p [...] _....5D.29


---------------
We deserve everything that's coming...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [resolu] comment récupérer le contenu d'un json avec jquery

 

Sujets relatifs
Récuperer tous les index d'un array dans 1 variablejquery et ui : j'ai besoin d'un petit coup de main pour me lancer.
Programme pouvant récupérer le signal d'une souris apple usbRécuperer info membre Php-Mysql
[jQuery] Code non exécutéRecuperer resultat d'un select dans un tableau
menu javascript + slider jquery avec IE7script bash recuperer FAI
Récuperer balise # dans un url (facebook & gmail like)rollover sur toute une ligne et toute une colonne avec jquery
Plus de sujets relatifs à : [resolu] comment récupérer le contenu d'un json avec jquery


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR