IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] parcourir un JSON


Sujet :

AJAX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 42
    Points
    42
    Par défaut [AJAX] parcourir un JSON
    Bonjour,

    J'aimerais pouvoir parcourir le tableau de tableau que retourne ma page php. Du coté de php, mon code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    header('Content-Type: application/json');
    $tab = $myFac->test($_POST['idFac'], $_POST['idMag']);
    $reponse = array();
    foreach ( $tab as $value ) {
     	array_push($reponse,array('id_article' => $value['id_article'],'nbr' => $value['nbr']));
    }
    echo json_encode($reponse);
    Je récupère coté javascript comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    onSuccess: function(xhr){
          var json = xhr.responseText.evalJSON();
          for(var value in json){
                alert(value.id_article);
          }
    }
    j'essais de partourir mon tableau et d'affiche les valeurs du tableau a l'intérieur, mais pas moyen... Pour l'instant mon "alert()" affiche undefined en boucle.. le json retourné est bien correcte, il est a bien quelque chose dans mon json...

    Est-ce juste comme je fais ? (la réponse est surement non..) donc comment faire ?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    value comme nom de variable, c'est pas très judicieux il est préférable d'éviter les noms appartenant à la syntaxe du langage !
    Essaye avec valeur à la place par exemple.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    ca ne fonctionne pas non plus.. toujours des undefined.. Merci quand meme

    L'appelle a la page php se fais avec prototype, avec ajax.Updater. et j'arrive le json a la page.. Ce qui est affiche est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [{"id_article":"3","nbr":"1"}]
    donc il y a bien qqchose dedans...

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut

    Essaie ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          for(var key in json){
                alert(key + ' = ' + json[key]);
          }
    EDIT: Oops. ton objet est dans un tableau, alors essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var obj = json[0];
    for(var key in obj){
         alert(key + ' = ' + obj[key]);
    }
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    on s'approche.. ca fonctionne, mais qu'a moitié !

    Ca m'affiche bien ce que je veux.. Mais le problème, c'est que des fois il me retourne qu'un tableau, des fois 10.. (donc 10 tableau dans le tableau)..

    Donc, je me suis dis, il faut bouclé sur tous les éléments retourné ! donc j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    					var json = xhr.responseText.evalJSON();
    					var obj;
                        for(var kj in json){
    				    	obj = json[kj];
                             for(var key in obj){
                                alert(key + ' = ' + obj[key]);
                            }
                        }
    Mais le problème c'est qu'il m'affiche tout plein de chose incompréhensible après.. Je pense que php ne me retourne pas que mon tableau, mais tout plein de chose par la suite.. Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prototype  = [object Object]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    argumentNames = function () { ............. }
    bref, un truc incompréhensible.. C'est que je n'ose pas bouclé sur tout ce qu'il me retourne ?

    En tout cas merci pour ta réponse !

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    la boucle for in n'est pas adéquate pour itérer un tableau en javascript.

    for in itère toutes les méthodes et propriétés de l'objet Array, c'est pour
    ça que tu vois plein de choses "Bizzares"

    Pour itérer un tableau, utilise un for classique avec une variable de 0 à <length

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(var i=0;i<json.length;i++) {
      var obj = json[i];
      ...
    }
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Sans vouloir remettre en cause ta réponse, je crois que tu amènes cependant à une confusion : un objet JSON n'est pas un tableau JavaScript, de la même manière que l'ensemble des "tableaux" non indicés.
    La confusion est compréhensible : on peut les définir de la même façon, on peut les manipuler et en appeler les éléments de façon comparable...
    MAIS : ils n'héritent pas des propriétés et méthodes des objets Array ! A ce point que normalement, les boucles for / in ne posent pas de problème.
    Le hic étant bien entendu le "normalement" ! Il est donc tout aussi judicieux d'éviter d'utiliser ce type de boucles
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    +1 Bovino, je n'avais jamais remarqué cet état de fait :-)

    Mais alors je ne m'explique pas pourquoi DeeVoiD semble itérer un Array
    (ou autre chose)
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Ca fonctionne !

    Pour parcourir mon JSON, j'ai fais une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(var i=0;i<json.length;i++) {
      var obj = json[i];
      ...
    }
    puis, ensuite, j'ai fais un boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(var key in obj){
          alert(key + ' = ' + obj[key]);
    }
    pour parcourir le tableau qui se trouve a l'intérieur de mon JSON..

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] parcourir JSon ?
    Par saadoz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/10/2008, 00h26
  2. [AJAX] Encodage avec JSON
    Par Norin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/07/2008, 22h02
  3. [AJAX] Ou intervient JSON ?
    Par whitespirit dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/06/2008, 08h42
  4. [AJAX] lecture fichier json distant
    Par 4R416N33 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/06/2008, 20h01
  5. [AJAX] Mise en place d'un réponse dans Ajax.Request via JSON
    Par polothentik dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 13/05/2008, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo