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 :

[AJAX] Récupération d'un fichier JSON avec javaScript


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [AJAX] Récupération d'un fichier JSON avec javaScript
    Bonjour,

    Mon problème est le suivant :

    J'ai écrit un script en javascript dont l'objectif est de récupérer des données qui se trouve dans un fichier au format JSON ( ce fichier "client.json" contient des noms et prénoms).

    <head>
    <script type="text/javaScript">
    <!--

    function recup()
    {
    if (req.readyState == 4) {
    var t =eval("("+req.responseText+")");
    alert(t[0].nom) // test pour afficher le nom du premier client pas de

    }
    }

    function creeXMLHttpRequestObject(){
    var objRequete = null;
    try { objRequete = new ActiveXObject("Microsoft.XMLHTTP");}
    catch(Error) { try { objRequete = new ActiveXObject("MSXML2.XMLHTTP");}
    catch(Error) { try { objRequete = new XMLHttpRequest(); }
    catch(Error) { alert(' Impossible de créer l\'objet XMLHttpRequest')}
    }
    }
    return objRequete;
    }

    req = new creeXMLHttpRequestObject();
    req.open("GET", "http://localhost/client.json", true);
    req.onreadystatechange= recup; // la fonction de prise en charge
    req.send(null);

    // -->
    </script>

    </head>

    <body>

    <form name="f1" >
    <input type="button" onclick="alert(t[0].nom)">
    </form>
    </body>

    </html>


    La récupération des données dans un tableau t déclaré comme variable locale dans la fonction recup() ne pose aucun problème.

    Par contre, si je déclare t en tant que variable globale ( je supprime le mot var devant t dans la fonction recup() ) , je ne peux plus accéder au données du tableau à partir du formulaire.

    J'aimerais savoir , s'il existe une possibilité pour récupérer les données d'un fichier JSON dans un tableau déclaré comme variable globale?

    Merci.

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Penser à la balise [CODE]...

    Voici une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Hors de toute fonction : var t=null;
    // Dans une fonction : window.t=null;
    eval("t=("+getFileContent("url")+")");
    et voici getFileContent et mes fonctions XHR :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
        // SetInnerHTML Sécurisé
        function setInnerHTML(divContent, HTML) {
          divContent.innerHTML=HTML; 
          var All=divContent.getElementsByTagName("*");
          for (var i=0; i<All.length; i++) {
            All[i].id=All[i].getAttribute("id")
            All[i].name=All[i].getAttribute("name")
            All[i].className=All[i].getAttribute("class")
          }
          var AllScripts=divContent.getElementsByTagName("script")
          for (var i=0; i<AllScripts.length; i++) {
             var s=AllScripts[i];
             if (s.src && s.src!="") {
                // Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts
                eval(getFileContent(s.src))
             }
             else {
                eval(s.innerHTML)
             }
          }
        }
     
        // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
        var pickRecentProgID = function (idList){
    	    // found progID flag
            var bFound = false;
            for(var i=0; i < idList.length && !bFound; i++){
                try{
                    var oDoc = new ActiveXObject(idList[i]);
                    o2Store = idList[i];
                    bFound = true;
                }catch (objException){
                    // trap; try next progID
                };
            };
            if (!bFound)
    		    throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
            idList = null;
            return o2Store;
        }
     
        // Retourne un nouvel objet XmlHttpRequest
        var GetXmlHttpRequest_AXO=null
        var GetXmlHttpRequest=function () {
    	    if (window.XMLHttpRequest) {
    		    return new XMLHttpRequest()
    	    }
    	    else if (window.ActiveXObject) {
    		    if (!GetXmlHttpRequest_AXO) {
    			    GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
    		    }
    		    return new ActiveXObject(GetXmlHttpRequest_AXO)
    	    }
    	    return false;
        }
     
        function getFileContent(url) {
           var Xhr=GetXmlHttpRequest();
           Xhr.open("GET",url,false);
           Xhr.send(null);
           return Xhr.responseText;
        }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

Discussions similaires

  1. [Tutoriel] Charger un fichier JSON avec AJAX
    Par autran dans le forum AJAX
    Réponses: 6
    Dernier message: 01/01/2017, 15h34
  2. [Tutoriel] Charger un fichier JSON avec AJAX
    Par autran dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/01/2016, 08h18
  3. [AJAX] Ecriture dans un fichier json avec une requête AJAX
    Par DarkPoster14 dans le forum jQuery
    Réponses: 1
    Dernier message: 10/07/2012, 09h45
  4. Afficher contenu JSON avec JavaScript sans AJAX
    Par glbaa dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 30/11/2011, 17h03

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