Lire un fichier texte [Résolu]

Signaler
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
-
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
-
Bonsoir,

J'ai emprunter y a quelques jours un livre à la bibliothèque de la ville sur l'AJAX.
J'en suis à la lecture de fichiers texte, mais ça fonctionne pas.

Voici le code :
test.html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>Liste de clients avec 4 informations - Tutoriel AJAX</title>
</head>

<script type="text/javascript" src="test.js"></script>
            ----

            Nom : |
            Prénom : |
            Age : |
            Date de naissance : |
       
       
        ----

            ,
            ,
            ,
            ,
       
   

</html>

client.txt :
{ Name: Nom Firstname: Prénom Age: 0, Birthday: 01/01/1900 }

function getData()
{
    /*Appel sous IE6 et -*/
    //var queryAJAX = new ActiveXObject('Microsoft.XMLHTTP'); //Objet ActiveXObject
   
    /*Appel sous IE7 et + et FireFox*/
    var queryAJAX = new XMLHttpRequest();
   
    queryAJAX.open('GET', 'client.txt', false); //Connexion HTTP vers une source de données
    queryAJAX.send(null); //Envoie de la requête
   
    var data = queryAJAX.responseText; //Récupère le contenu du fichier texte (responseXML pour un document XML)
    var Name = document.getElementById('name');
    Name.innerHTML = data.Name;
}

J'explique le problème, data.Name renvoi : Undefined au lieu de renvoyer la valeur de la propriété Name du fichier texte.
Et si je fais comme dans le livre c'est à dire que je rajoute un eval pour la variable data, ben là y a rien du tous, date est vide, alors que là si je remplace par exemple data.Name par data, il affiche bien le contenu du fichier texte précédemment lus.

Merci d'avance pour votre aide.

11 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
pour t'en convaincre relis ton bouquin et compare ton fichier !
{ Name: Nom Firstname: Prénom Age: 0, Birthday: 01/01/1900 }
ça ne correspond pas ! c'est sûr !!!
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
Bonjour,

sans eval, ça ne peut pas fonctionner tel quel,
il faut extraire les infos du "fichier" lu
avec eval, par exemple ( mis nom et prénom sans plus )
remplacé le onclikc par window.onload, mais bon....

testé uniquement avec FF et donc j'ai sucré l'inutile
 htm+javascript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
        <title>Liste de clients avec DEUX informations - Tutoriel AJAX</title>
        <script type="text/javascript">
            function getData()
            {   var queryAJAX = new XMLHttpRequest();
                queryAJAX.open('GET', 'client.txt', false);
                queryAJAX.send(null);
                eval("var data = "+queryAJAX.responseText);
                document.getElementById('name').innerHTML = data.Name;
                document.getElementById('Firstname').innerHTML=data.firstname;
            }   
            window.onload=function()    {    getData();    }
        </script>
    </head>
   
         <table border="1">
              ----

                    Nom : |
                    Prénom : |
                    Age : |
                    Date de naissance : |
             
              ----

                   , </td>
                    ,
                    ,
                    ,
             
         

   
</html>
</td></tr></tbody></table>

 le fichier texte

{ "Name":"Gédéon","firstname":"Teuzeumani" }

tel que c'est là c'est pour 1 client, pas 2 !
pas si simple d'ailleurs à faire avec plusieurs !
si c'est ton but, passe plutôt par un fichier .xml

Cordialement
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
Je veux bien, mais ce que tu m'indique ne fonctionne pas (j'utilise FireFox).
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
si si ( l'impératrice ) ça fonctionne

essaye tel quel !
et dire que ça ne fonctionne pas n'aide pas à répondre !!!!!!
tu dois ne pas recopier correctement.
comme il y a trop de possibilités d'erreurs,
    donner des pistes serait absurde.
si tu ne parviens pas, met nous ton script + ton fichier
( fichier dans lequel tu avais des erreurs ! )
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
Pourtant j'ai recopier ton code.
Fichier test.html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>Liste de clients avec 4 informations - Tutoriel AJAX</title>
<script type="text/javascript">
function getData()
{
    var queryAJAX = new XMLHttpRequest();
    queryAJAX.send(null);
    eval("var data = "+queryAJAX.responseText);
    document.getElementById('Name').innerHTML = data.Name;
    document.getElementById('Firstname').innerHTML=data.Firstname;
}
window.onload=function()    {    getData();    }
</script>
</head>

            ----

            Nom : |
            Prénom : |
            Age : |
            Date de naissance : |
       
       
        ----

            ,
            ,
            ,
            ,
       
   

</html>

Fichier client.txt :
{ "Name":"Gédéon","Firstname":"Teuzeumani" }
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
>>Pourtant j'ai recopier ton code.
peut-être ? mais je doute !
pas regardé très loin, mais non ! tu n'as pas copié complètement !!
j'avais mis        { "Name":"Gédéon","firstname":"Teuzeumani" }
et toi tu mets    { "Name":"Gédéon","Firstname":"Teuzeumani" }
pas tout à fait la même chose...
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
Si tu regardes, dans le code j'ai aussi changé le F minuscule par majuscule vu que j'ai fait le changement de la lettre dans le fichier texte.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
tout ce que je te dis, c'est que ce que mon fonctionne
malgré tes affirmations !!!!!! ( enfin pour 1 client !!! pas 2 )
ce que tu fais  ne fonctionne pas,
enfin... c'est ce que tu dis ( je ne vais pas tester ! )
je ne peux pas faire plus que te donner un exemple qui marche.
après, mon foie, va falloir que tu creuses si tu adaptes
( pas comme il faut probablement )
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
ce doit d'ailleurs être la même chose avec le livre dont tu parles !
je suis sur que cela fonctionne, mais tu adaptes mal.
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
J'ai trouvé le blem, sans faire exprès j'avais supprimé l'appel à open, donc ça fonctionnait pas.
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
Ouais mais bon, justement ça fonctionnait pas avec le bouquin, d'où ma demande d'aide ;)

Enfin bon, merci pour ton aide ;)