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 :

[JSON] ajouter des éléments à un objet


Sujet :

jQuery

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [JSON] ajouter des éléments à un objet
    Bonjour,

    J'ai créé un objet json vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine_book_for = {};
    Je voudrais remplacer l'objet vide par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"fold1-key1":{"name":"Van Antwerpen"},"fold1-key2":{"name":"Delporte"},"fold1-key3":{"name":"Lallemand"}}
    Je fais ceci, ça ne semble pas fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine_book_for = retour_php;
    retour_php vaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"fold1-key1":{"name":"Van Antwerpen"},"fold1-key2":{"name":"Delporte"},"fold1-key3":{"name":"Lallemand"}}
    Merci d'avance pour votre aide.

    bee

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Citation Envoyé par beegees Voir le message
    ça ne semble pas fonctionner
    Mais encore ? Message d'erreur, valeur assignée ?
    One Web to rule them all

  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 : 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
    Tu commets beaucoup d'erreurs de logique...

    J'ai créé un objet json vide

    Le code que tu montres crée un objet, point barre. Un objet JSON, ce n'est pas du tout pareil.
    Par exemple, en JavaScript, un objet peut très bien avoir une propriété qui corresponde à une fonction, mais ce ne sera pas transposable en JSON.

    retour_php vaut ...
    Si j'en crois ton nommage, retour_php correspond à ce que JavaScript reçoit d'un script PHP (à priori, avec AJAX). Or le moyen habituel de communiquer entre JavaScript et PHP (donc entre le client/navigateur et le serveur), c'est le protocole HTTP (renseigne-toi sur la signification du premier T de l'acronyme) et à moins que tu utilises xhr2 (ce dont je doute fort), la réponse reçue par JavaScript de PHP est une chaine, ce qui signifie que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine_book_for = retour_php;
    va affecter à ta variable une chaine, ce qui n'est certainement pas ce que tu souhaites.

    Regarde du côté de JSON.parse() et éventuellement des divers polyfills pour les anciens navigateurs.
    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 éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut à vous deux,

    Merci pour vos réponses.

    Pour ce qui est du retour, c'est bien un objet grâce à cette ligne de code :

    Je commence à comprendre ce qu'il se passe (je pense en tout cas) :

    Je crée un objet global tout en haut de mon code :

    J'essaie ensuite de modifier cet objet dans le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    jQuery(document).ready(function($){
    	$.ajax({
    		method:'POST',
    		dataType: 'json',
    		url:'ajax/liste_users.php',
    		success:function(retour_php){
    			//alert(retour_php);
    			chaine_book_for = retour_php;
    			console.log(chaine_book_for);
    		});
    Je me dmeande si chaine_book_for dans le code ci-dessus n'est pas différent de celui créé tout en haut de l'objet ?

    Ce qui est sûr, c'est qu'un console.log m'affiche le contenu de chaine_book_for dans la méthode ajax :

    Object { fold1-key1={...}, fold1-key2={...}, fold1-key3={...}, plus...}
    En dehors de la méthode $.ajax, console.log m'indique :

    Object {}
    L'objet est donc vide.

    Vous en pensez quoi ?

    bee

  5. #5
    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
    Vous en pensez quoi ?
    Que ta requête est asynchrone et que tant que tu n'as pas reçu la réponse, ton objet est logiquement vide...
    Un classique AJAX : utiliser les données au bon moment !
    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

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bovino

    Tu as raison, j'ai mis mon bloc de code en asynchrone (chose que je ne fais jamais) :

    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
    chaine_book_for = function()
    {
    	var tmp;
    	$.ajax(
    	{
    		method:'POST',
    		dataType: 'json',
        		async: false,
    		url:'ajax/liste_users.php',
    		success:function(retour_php)
    		{
                        chaine_book_for = retour_php;
    		    tmp = retour_php;
    		}
    	});
    	return tmp;
    }();
    Merci pour ton aide Bovino


    bee

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

Discussions similaires

  1. Ajouter des élément a un tableau
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/07/2007, 14h23
  2. Réponses: 22
    Dernier message: 04/04/2007, 15h24
  3. Ajouter des éléments à un document XML
    Par ptr83 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/10/2006, 08h43
  4. [Shell] Ajouter des éléments au poste de travail
    Par Feeder_Fan dans le forum Framework .NET
    Réponses: 2
    Dernier message: 04/12/2005, 04h07
  5. Ajouter des éléments à ListBox
    Par priest69 dans le forum Access
    Réponses: 5
    Dernier message: 20/09/2005, 14h05

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