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 :

Retourner un objet json depuis un $.get


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut Retourner un objet json depuis un $.get
    Bonjour à tous,

    Ma problématique concerne l'affichage d'information contenues à la base dans un fichier xml.
    Les informations d'une page sont affichées dynamiquement en fonction d'un élément de menu cliqué, et correspondant à un noeud du fichier xml.
    J'ai mis en place une solution qui fonctionne, mais qui ne me satisfait pas:

    1. Je détecte le clic sur l'un des liens du menu
    2. Je charge le fichier XML sur lequel je dois me baser pour afficher le contenu correspondant
    3. Je transforme ce fichier xml en json à l'aide du plugin xml2json
    4. Je parcours l'objet obtenu pour accéder à mon information

    En l'état, ma méthode charge le fichier XML pour chaque lien, et ce n'est pas top en terme de performance.

    Je cherche donc à charger le fichier XML, le transformer en json pour le stocker dans une variable, ainsi manipulable pour l'ensemble des liens du menu, sans avoir à recharger le XML une nouvelle fois.

    Ce qui donnerai:
    1. je charge le fichier xml
    2. je transforme le fichier xml en json
    3. je stocke l'objet json dans une variable
    4. pour chaque lien, je parcours l'objet à la recherche du contenu

    Pour le moment, j'ai un code de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var xml_content = 'mon_fichier.xml';
    var getPage = $.get(xml_content, function(xml){
      //utilisation du plugin
        var json = $.xml2json(xml);
        console.log(json); 
        return json;
    });
    console.log(getPage);
    La première console me renvoie bien l'objet json, et la deuxième un objet XMLHttrRequest.

    Mon problème, c'est que je ne parviens pas à ce que ma variable getPage soit un objet JSON, en dehors de la fonction.
    De plus, je pense qu'il doit y avoir un problème de synchro car la deuxième console s'affiche avant la première.
    le responseText de l'objet XMLHttrRequest renvoi le code XML, ce qui confirmerait le problème de synchro.

    Comment faire pour que le "return json;" me renvoi bien l'objet json ?

    Pour info, voici le code qui fonctionne, mais qui s'exécute sur chaque lien (donc lourd):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $.get(xml_content, function(xml){
            var page = $.xml2json(xml);
              for(var page_num in page.nom) {
              //tab_page fait reference à la valeur d'un tableau déclaré plus haut
                if(page.nom[page_num].id == tab_page[2]){
                  for(var lang in page.nom[page_num].traduction) {
                    if(page.nom[page_num].traduction[lang].lg == tab_page[1]){
                      texte = page.nom[page_num].traduction[lang].texte;
                    }
                  }
                }
              }
            });
    Merci d'avance pour toute aide ou suggestion

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut
    J'ai trouvé

    C'était bien un problème de synchronisation, que j'ai résolu en utilisant la fonction $.ajax, en forçant le mode synchrone:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var pages;
      $.ajax({
        url: xml_content,
        async: false,
        dataType: 'xml',
        success: function(xml){
          pages = $.xml2json(xml);
        }
      });
    De cette manière, la variable "pages" contient bien mon objet en plus d'être accessible dans tout le script.

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

Discussions similaires

  1. Application pour retourner un objet JSON
    Par fujitsu4 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 22/11/2014, 17h38
  2. Réponses: 2
    Dernier message: 16/04/2014, 12h00
  3. [Ajax] Retourner un objet en Json ?
    Par Odawin dans le forum Spring
    Réponses: 19
    Dernier message: 28/01/2014, 15h11
  4. retourner objet Json via ajax ? hmm
    Par Myfred dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 25/06/2008, 11h06
  5. Référence à un objet existant depuis une classe
    Par Adrenalys dans le forum ASP
    Réponses: 2
    Dernier message: 21/07/2005, 00h44

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