Lire un fichier texte

Résolu
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 - 6 juin 2009 à 00:52
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 - 6 juin 2009 à 16:56
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 15
6 juin 2009 à 13:53
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 !!!
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 15
6 juin 2009 à 10:25
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
0
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
6 juin 2009 à 10:40
Je veux bien, mais ce que tu m'indique ne fonctionne pas (j'utilise FireFox).
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 15
6 juin 2009 à 10:48
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 ! )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
6 juin 2009 à 12:54
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" }
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 15
6 juin 2009 à 13:07
>>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...
0
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
6 juin 2009 à 13:40
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.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 15
6 juin 2009 à 13:46
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 )
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 15
6 juin 2009 à 13:47
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.
0
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
6 juin 2009 à 13:52
J'ai trouvé le blem, sans faire exprès j'avais supprimé l'appel à open, donc ça fonctionnait pas.
0
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
6 juin 2009 à 16:56
Ouais mais bon, justement ça fonctionnait pas avec le bouquin, d'où ma demande d'aide ;)

Enfin bon, merci pour ton aide ;)
0
Rejoignez-nous