Lire un fichier texte

[Résolu]
Signaler
Messages postés
259
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
4 juillet 2021
-
Messages postés
259
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
4 juillet 2021
-
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.
A voir également:

11 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
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
12
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
259
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
4 juillet 2021
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
12
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
259
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
4 juillet 2021
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
12
>>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
259
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
4 juillet 2021
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
12
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
12
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
259
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
4 juillet 2021
4
J'ai trouvé le blem, sans faire exprès j'avais supprimé l'appel à open, donc ça fonctionnait pas.
Messages postés
259
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
4 juillet 2021
4
Ouais mais bon, justement ça fonctionnait pas avec le bouquin, d'où ma demande d'aide ;)

Enfin bon, merci pour ton aide ;)