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

jQuery Discussion :

Ajout dynamique des items dans un objet JSON


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 520
    Par défaut Ajout dynamique des items dans un objet JSON
    bonjour,
    je récupère un objet json depuis une requête ajax (toutes les publications, environ 300 pub), et je veux créer un nouveau item dans cet objet.
    l'objet est trop gros, donc j'ai choisi juste le premier index.
    donc je fais ça :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    var all_pub = [{
      id_pub: 1,
      commentaire: [{
        0: {
          id_comment: 1,
          nom: 'Nom1'
        }
      }, {
        1: {
          id_comment: 2,
          nom: 'Nom2'
        }
      }]
    }];
    /*set la valeur de all_pub[0]['commentaire']['sous_commentaire']*/
    all_pub[0].commentaire.sous_commentaire = [{
      id_s_com: 1
    }, {
      id_s_com: 2
    }];
     
    /*parcourir l'objet*/
    all_pub.map(function(cle, i) {
      $.map(cle, function(valeur, cle2) {
        if (cle2 == 'commentaire') {
          $.map(valeur, function(valeur1, cle3) {
            if (cle3 == "sous_commentaire") {
              console.log('oui'); // ne s'affiche pas.
            }
            console.log(cle3 + ':' + valeur1[cle3] + ', type :' + $.type(valeur1));
          });
        }
      });
    });
    console.log('all_pub[0].commentaire.sous_commentaire :' + JSON.stringify(all_pub[0].commentaire.sous_commentaire)); //s'affiche bien !!!
    console.log(JSON.stringify(all_pub));//n'affiche pas l'objet sous_commentaire !!!
    le problème c'est que l'objet all_pub[0].commentaire.sous_commentaire est bien crée, mais il n'existe plus quand je fais console.log(JSON.stringify(all_pub)).

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    ta façon de procéder fait que tu ajoutes une nouvelle propriété à ton Array « commentaire » mais pas un nouvel élément.

    Ton console.log doit le faire apparaître mais pas comme élément, fait un teste sur la length de l'Array.
    JSON.stringify traite les clé/valeur mais pas les propriétés.

    Il te faudrait à minima procéder de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // création de l'élément à ajouter
    var sousComment = {
      "sous_commentaire": [
        {
          "id_s_com": 1
        },
        {
          "id_s_com": 2
        }
      ]
    };
    // ajout de l'élément
    all_pub[0].commentaire.push( sousComment);

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 520
    Par défaut
    parfait, merci beaucoup pour l'aide, j'ai remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    all_pub[0].commentaire.sous_commentaire = [{
      id_s_com: 1
    }, {
      id_s_com: 2
    }];
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    all_pub[0].commentaire.push({sous_commentaire:[{
      id_s_com: 1
    }, {
      id_s_com: 2
    }]});
    maintenant je vois bien le 'sous_commentaire' dans la console.log().

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

Discussions similaires

  1. Ajouter dynamiquement des item au menu
    Par Ryu2000 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 16/05/2012, 16h24
  2. Ajout dynamique des champs dans un JFrame
    Par amine1980 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 12/12/2011, 12h19
  3. ajout dynamique des option dans un select
    Par rochdi123 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/10/2009, 20h30
  4. ajout dynamique d'item dans menu
    Par med_ellouze dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/01/2008, 10h45
  5. ajouter dynamiquement des items dans un popup menu
    Par Malone dans le forum Composants VCL
    Réponses: 7
    Dernier message: 23/08/2005, 16h08

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