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 :

[JSON] Stringify retourne [Object object]


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de windmastr26
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 234
    Par défaut [JSON] Stringify retourne [Object object]
    Salut à toutes et tous,

    Je dois concevoir une application de gestco au format web. Sur une même page, j'ai plusieurs champs (coordonnées, références, dates, etc.) ainsi qu'un gridView improvisé chargé de constituer les différentes lignes d'une commande.
    Mon objectif est qu'au fur et à mesure que l'utilisateur ajoute ses lignes, celles-ci alimentent un objet 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
    17
    18
    [
      Object{
        index = 0,
        code = "article1",
        libelle = "Désignation de la 1ère ligne",
        pu = 5.00,
        qte = 10.00,
        total = 50.00
      },
      Object{
        index = 1,
        code = "article2",
        libelle = "Désignation de la 2nde ligne",
        pu = 7.00,
        qte = 3.00,
        total = 21.00
      },
    ]
    Au moment de valider la commande, l'objet JSON est intégralement retranscrit dans un input de type "hidden". Seulement voilà, si le stockage de l'objet est bien possible dans une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval("maVariable=" + JSON.stringify(mesLignes));
    L'enregistrement dans un input :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#monInput").val(eval(JSON.stringify(mesLignes)));
    Donne le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ [Object object], [Object object] ]
    Quelqu'un aurait une idée du pourquoi du comment ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Ton json est malformé, commence par ça.

  3. #3
    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
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(JSON.stringify(mesLignes))
    Oh non...

    Pourquoi utiliser eval() ???

    JSON.stringify() te retourne la chaine correspondant à l'objet JSON. Si tu fais un eval() dessus, ça va nécessairement te recréer l'objet JSON de départ !
    Du coup, c'est tout à fait normal que tu ne puisses pas affecter un objet comme valeur d'un champ de formulaire.
    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

  4. #4
    Membre confirmé Avatar de windmastr26
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 234
    Par défaut
    Désolé Bovino, ça fait un moment que je butte sur ce problème, et le "eval()" est le résultat d'une de mes nombreuses tentatives pour débloquer la situation... J'ai oublié de l'enlever en copiant le code sur le site

    Merci Marco, à force d'avoir le nez dedans, je ne voyais plus des choses aussi simples que cela :

    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
    17
    18
    lines: [
      Object{
        index = 0,
        code = "article1",
        libelle = "Désignation de la 1ère ligne",
        pu = 5.00,
        qte = 10.00,
        total = 50.00
      },
      Object{
        index = 1,
        code = "article2",
        libelle = "Désignation de la 2nde ligne",
        pu = 7.00,
        qte = 3.00,
        total = 21.00
      },
    ]
    Tout fonctionne à merveille !

    Merci à vous deux

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par windmastr26 Voir le message
    Désolé Bovino, ça fait un moment que je butte sur ce problème, et le "eval()" est le résultat d'une de mes nombreuses tentatives pour débloquer la situation... J'ai oublié de l'enlever en copiant le code sur le site

    Merci Marco, à force d'avoir le nez dedans, je ne voyais plus des choses aussi simples que cela :

    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
    17
    18
    lines: [
      Object{
        index = 0,
        code = "article1",
        libelle = "Désignation de la 1ère ligne",
        pu = 5.00,
        qte = 10.00,
        total = 50.00
      },
      Object{
        index = 1,
        code = "article2",
        libelle = "Désignation de la 2nde ligne",
        pu = 7.00,
        qte = 3.00,
        total = 21.00
      },
    ]
    Tout fonctionne à merveille !

    Merci à vous deux
    ????
    ce code provoque une syntax error
    en effet object{ ça le fait pas en js en enlevant les object la , en trop et en premplacant = par : ça fonctionne mais sans toutes ces correction ??? là je comprends pas
    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
    17
    18
    {lines: [
      {
        index : 0,
        code : "article1",
        libelle : "Désignation de la 1ère ligne",
        pu : 5.00,
        qte : 10.00,
        total : 50.00
      },
      {
        index : 1,
        code : "article2",
        libelle : "Désignation de la 2nde ligne",
        pu : 7.00,
        qte : 3.00,
        total : 21.00
      }
    ]}
    mais lines ne sert à rien
    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
    17
    18
    19
    20
    test = [
      {
        index : 0,
        code : "article1",
        libelle : "Désignation de la 1ère ligne",
        pu : 5.00,
        qte : 10.00,
        total : 50.00
      },
      {
        index : 1,
        code : "article2",
        libelle : "Désignation de la 2nde ligne",
        pu : 7.00,
        qte : 3.00,
        total : 21.00
      }
    ];
    JSON.stringify(test);
    //[{"index":0,"code":"article1","libelle":"Désignation de la 1ère ligne","pu":5,"qte":10,"total":50},{"index":1,"code":"article2","libelle":"Désignation de la 2nde ligne","pu":7,"qte":3,"total":21}]
    A+JYT

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/12/2012, 02h29
  2. Réponses: 3
    Dernier message: 24/02/2012, 11h28
  3. Retourner un object avec domaine service
    Par anthride dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 12/01/2012, 20h08
  4. Méthode asynchrone retournant un Object
    Par thomas_31 dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 29/09/2011, 16h11
  5. Réponses: 2
    Dernier message: 24/08/2011, 19h49

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