Lire un fichier texte [Résolu]

cs_christophedlr 257 Messages postés samedi 3 janvier 2004Date d'inscription 30 mai 2016 Dernière intervention - 6 juin 2009 à 00:52 - Dernière réponse : cs_christophedlr 257 Messages postés samedi 3 janvier 2004Date d'inscription 30 mai 2016 Dernière intervention
- 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.
Afficher la suite 

11 réponses

Répondre au sujet
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 6 juin 2009 à 13:53
+3
Utile
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 !!!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 6 juin 2009 à 10:25
0
Utile
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
Commenter la réponse de Bul3
cs_christophedlr 257 Messages postés samedi 3 janvier 2004Date d'inscription 30 mai 2016 Dernière intervention - 6 juin 2009 à 10:40
0
Utile
Je veux bien, mais ce que tu m'indique ne fonctionne pas (j'utilise FireFox).
Commenter la réponse de cs_christophedlr
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 6 juin 2009 à 10:48
0
Utile
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 ! )
Commenter la réponse de Bul3
cs_christophedlr 257 Messages postés samedi 3 janvier 2004Date d'inscription 30 mai 2016 Dernière intervention - 6 juin 2009 à 12:54
0
Utile
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" }
Commenter la réponse de cs_christophedlr
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 6 juin 2009 à 13:07
0
Utile
>>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...
Commenter la réponse de Bul3
cs_christophedlr 257 Messages postés samedi 3 janvier 2004Date d'inscription 30 mai 2016 Dernière intervention - 6 juin 2009 à 13:40
0
Utile
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.
Commenter la réponse de cs_christophedlr
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 6 juin 2009 à 13:46
0
Utile
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 )
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 6 juin 2009 à 13:47
0
Utile
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.
Commenter la réponse de Bul3
cs_christophedlr 257 Messages postés samedi 3 janvier 2004Date d'inscription 30 mai 2016 Dernière intervention - 6 juin 2009 à 13:52
0
Utile
J'ai trouvé le blem, sans faire exprès j'avais supprimé l'appel à open, donc ça fonctionnait pas.
Commenter la réponse de cs_christophedlr
cs_christophedlr 257 Messages postés samedi 3 janvier 2004Date d'inscription 30 mai 2016 Dernière intervention - 6 juin 2009 à 16:56
0
Utile
Ouais mais bon, justement ça fonctionnait pas avec le bouquin, d'où ma demande d'aide ;)

Enfin bon, merci pour ton aide ;)
Commenter la réponse de cs_christophedlr

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.