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

JavaScript Discussion :

Lecture d'un code JSON


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut Lecture d'un code JSON
    Bonjour à tous,

    Je suis confronté à un soucis que je n'arrive pas à résoudre c'est pour cela que je me tourne vers la communauté de developpez.com :p

    Je reçois d'un web service ce code json suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"items":{"id":"1","nom":"coucou \u00e7a va bien ? ouep tranquille et toi ?","time":"24"}}
    J'aimerais réussir à lire les données qui se trouve à l'intérieur comment faut-il faire ?

    J'ai cherché sur le net différente manière de procédé mais cela ne fonctionne pas.
    Personnellement j'ai toujours appris à faire ça sur une chaîne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_variable_json["items"]["nom"]
    Hors là c'est du JSON qui arrive de mon webservice, je fais donc JSON.parse(JSON) mais ça ne marche pas.

    Ce qui est sensé me retourné ça valeur.... mais non.

    J'oublie sûrement un élément, pouvez vous me dire lequel ? Ou comment procéder ?

    Bien cordialement,
    Blooster.

  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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ben... désolé, mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var ma_variable_json = JSON.parse('{"items":{"id":"1","nom":"coucou \u00e7a va bien ? ouep tranquille et toi ?","time":"24"}}');
    console.log(ma_variable_json["items"]["nom"]);
    console.log(ma_variable_json.items.nom);
    ça m'affiche bien le résultat attendu...
    Donc à part si tu testes avec IE6 (ou autre navigateur qui n'implémente pas JSON.parse()), il n'y a aucune raison dans ce que tu expliques pour que ça ne marche pas...

  3. #3
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    Excuse moi alors, j'ai dû mal m'exprimer.
    C'est sûrement ma façon de faire qui ne va pas alors.

    Voici mon code côté js qui appel ma requête ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        function createTimer() {
            var jsonObject = ajax(id).responseText;
            id++;
            alert(jsonObject);
            secs = nbTime;  // à prendre avec le json object
            Decrement(nbTime);
        }
    Et ensuite ma requête ajax qui retourne le json :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function ajax(id)
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
     
        xhr.open("GET", "http://localhost/Test/testTimer/services/recupNomText.php?id="+id, false);
        xhr.send(null);
        return xhr;
    }
    Je n'utilise pas JSON.parse dans ce code là, mais si j'essaie de le mettre par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var jsonObject = JSON.parse(ajax(id).responseText);
    Ou même sans le responseText :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var jsonObject = JSON.parse(ajax(id));
    Cela ne marche pas.
    J'ai aussi essayé de le mettre du côté ajax au moment de retourner mon json mais toujours pas.

    Tu vois mon erreur ?

    Merci bien.
    Blooster

  4. #4
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu vois mon erreur ?
    Là comme ça, non, je la vois pas...

    Que t'affiche le
    Ou dit autrement, que renvoie http://localhost/Test/testTimer/services/recupNomText.php?id="+id ?

  5. #5
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    Comme dit plus haut lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/Test/testTimer/services/recupNomText.php?id=1
    Me retourne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"items":{"id":"1","nom":"coucou \u00e7a va bien ? ouep tranquille et toi ?","time":"24"}}
    Et par la même occasion lorsque je fais une alert de mon jsonObject j'obtiens bien la même chose.

    Je suis juste confronté à une difficulté pour le parcours du JSON.

  6. #6
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Désolé, mais là, on va atteindre le post récursif, parce qu'à part de répéter ce que je t'ai dit dans le message #2, je n'ai pas grand chose à rajouter qui puisse t'aider...

    Tu utilises quel navigateur ? Y a-t-il un message dans la console d'erreur ?

  7. #7
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    Oui effectivement on tourne un peu en rond là.

    Si ça peut t'aider quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            var jsonObject = JSON.parse(ajax(id));
            alert(jsonObject);
    Je n'obtiens pas mon alerte.


    Alors que si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            var jsonObject = ajax(id).responseText;
            alert(jsonObject);
    J'obtiens bien cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"items":{"id":"1","nom":"coucou \u00e7a va bien ? ouep tranquille et toi ?","time":"24"}}
    Je dois donc avoir une erreur de syntaxe ou de confusion dans mon code.

    En espérant que ça t'aide un peu plus.
    Je continue de chercher de mon côté en attendant une idée.

  8. #8
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    J'ai finalement trouvé mon erreur.
    Il faut le faire en deux temps ( je pense ), avant de parse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            var jsonObject = ajax(id).responseText;
            id++;
            alert(jsonObject);
            var json = JSON.parse(jsonObject);
            alert(json["items"]["nom"]);
    Si on essaie de faire directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            var jsonObject = JSON.parse(ajax(id));
            alert(jsonObject["items"]["nom"]);
    Cela ne fonctionnera pas.

    A moins que cela soit mon erreur que je fais depuis le début mais bon^^
    Le principale c'est que ça soit réglé.

    Merci bien Bovino.
    Au plaisir.

  9. #9
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var jsonObject = JSON.parse(ajax(id));
    Si tu fais ça, tu essayes de parser l'objet XMLHttpRequest car c'est ce qui est renvoyé par ta fonction ajax() (return xhr;). Donc effectivement, ça crée une erreur.

  10. #10
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    heu
    ajax(id).responseText me retourne {"items":{"id":"1","nom":"coucou \u00e7a va bien ? ouep tranquille et toi ?","time":"24"}}

    ben tu fais var ma_variable_json = JSON.parse('{"items":{"id":"1","nom":"coucou \u00e7a va bien ? ouep tranquille et toi ?","time":"24"}}');

    mais si je fais var ma_variable_json = JSON.parse(ajax(id))ça marche pas

    heu t'es sur d'avoir lu ce que tu fais ?

    n'y a t-il pas une petite différence entre ajax(id).responseText et ajax(id) ?


    A+JYT

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/05/2011, 18h51
  2. lecture dans un format json
    Par viny dans le forum jQuery
    Réponses: 15
    Dernier message: 24/01/2011, 23h50
  3. Lecture d'un code barre via une douchette
    Par dimainfo dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/06/2009, 09h40
  4. [AJAX] Lecture d'un fichier json par ajax
    Par zizoo510 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/08/2008, 12h11

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