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 :

Ajax ,JSON ,connaître le nom d'un objet récupéré depuis PHP


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Par défaut Ajax ,JSON ,connaître le nom d'un objet récupéré depuis PHP
    Bonjour ,

    je récupère des données depuis PHP, et je l'ai traite avec Ajax pour afficher un graphe

    Données récupérées :
    Code JSON : 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
     
    [
      {
        "abreviation_etablissment": "U. Blida-1-",
        "nbre_PI": "34"
      },
      {
        "abreviation_etablissment": "U. STHB",
        "nbre_PI": "33"
      },
      {
        "abreviation_etablissment": "U. Boumerdès",
        "nbre_PI": "21"
      },
      {
        "abreviation_etablissment": "U. Sidi Bel Abbès",
        "nbre_PI": "25"
      },
      {
        "abreviation_etablissment": "U. Sétif-1-",
        "nbre_PI": "19"
      }
    ]

    et pour les traitements au niveau d'Ajax

    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
     
     
    .....
     $.ajax({
                    url: "data.php",
                    method: "POST",
                    data: temp + postVar,
                    //dataType: 'JSON',
     
                }).done(function(response) {
     
     
                    var response = JSON.parse(response);
                    var len = response.length;
                    var firstfield;
     
     
     
                    for (var i = 0; i < response.length; i = i + 1) {
     
                        x_axe_ = response[i].abreviation_etablissment;
                        y_axe_ = response[i].nbre_PI;
     
     
     
                        all[0].push(x_axe_); //all[0] array of labels
                        all[2].push(y_axe_); // all[2] array of number :count
     
                        //if (allCharts[index]) allCharts[index].destroy();
     
                        allCharts[index] = showGraph(id, defaultGraph, ...all);
                    }
                    // console.log(response);
     
     
                });

    La question,
    y a-t-il une méthode de savoir les noms des variables récupérées (abreviation_etablissment, nombre pi) sans revenir à la requête SQL et voir les champs récupérés , Presque toutes mes requêtes vont récupérer deux champs (mais parfois j'aurais des noms différents)

    la solution que j'ai opté c'est de renommer tous les chams récupérés
    pour le premier champ (x_axe) et le deuxième champ (y_axe)> ,cette façon m'a obligé de réécrire toutes mes requêtes

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT etablissement.abreviation_etablissment as x_axe, count(deposer_prop_etab.id_prop_intellec) as y_axe FROM ........  ORDER BY `y_axe` DESC

    Merci

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    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 513
    Par défaut
    Bonjour,

    Pour récupérer les clés d'un objet, tu peux utiliser Object.keys().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(var i = 0; i < response.length; i = i + 1){
        console.log("Clés de response["+i+"] :", Object.keys(response[i]) );//affiche les clés de l'item "i".
    }
    Concernant le dataType:"json" d'ajax que tu as commenté, de-commente là et supprime le var response = JSON.parse(response);, car ajax convertit automatiquement le retour en json quand le dataType est json.

    Comme tu peux aussi remplacer la boucle for, par $.each pour utiliser les fonctions de jQuery.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    Citation Envoyé par Toufik83
    Pour récupérer les clés d'un objet, tu peux utiliser Object.keys().
    je partirais plutôt avec Object.values() puisque les clés ne sont pas utilisées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const datasX = [];
    const datasY = [];
    response.forEach((data) => {
      const tab = Object.values(data);
      datasX.push(tab[0]);
      datasY.push(tab[1]);
    })
    console.log(datasX);
    console.log(datasY);

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Par défaut
    Merci Toufik83 , Merci NoSmoking

    pour l'utilisation Object.keys(). J'ai pu récupérer les axes x et y ,(axe_X ,axe_Y)

    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
     var len = response.length;
     
     
     
                    axe_X = Object.keys(response[0])[0];  // résultat = abreviation_etablissment
                    axe_Y = Object.keys(response[0])[1];  // résultat = nbre_PI
     
     
     
     
                    for (var i = 0; i < response.length; i = i + 1) {
     
                        x_axe_ = response[i].abreviation_etablissment;
                        y_axe_ = response[i].nbre_PI
     
                        console.log(response[i].axe_X);  // undefined 
                        console.log(response[i].axe_Y);  // undefined
     
     
                        all[0].push(x_axe_);
                        all[2].push(y_axe_);
     
     
                    }
     
     
     
                });
    mais quand j'accède à la variable response[i].axe_X j'obtiens undefined ;Est-ce que parce que c'est un string et non pas un objet ? pourtant on récupère le même nom !

    et pour dataType:"json" ,car m'a provoqué une erreur de retour, donc en supprimant la ligne [var response = JSON.parse(response);] et en ajoutant dataType:JSON ; Ça fonctionne bien

    ----------------------------------------------

    Et l'approche de NoSmoking en utlisant Object.values() Ça fonctionne parfaitement

    Le problème est résolu, juste une indication pour la première approche avec Object.keys(), pourquoi on obtient undefined

    Merci

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Par défaut
    Merci Toufik83 , Merci NoSmoking
    Le problème est bien résolu

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

Discussions similaires

  1. affectation d'un objet sans connaitre le nom
    Par Space23 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 08/10/2011, 22h03
  2. comment connaitre le nom des objets dans un objet
    Par thierry007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/09/2009, 14h50
  3. Connaitre le nom de l'objet à lorigine d'un evenement
    Par icicmoi dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/09/2008, 15h43
  4. Connaitre le nom sous lequel on a instancié un objet.
    Par Pierre8r dans le forum Général Java
    Réponses: 9
    Dernier message: 29/02/2008, 20h09
  5. Connaitre le nom des imprimantes
    Par bastien dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2002, 16h36

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