Tout est dans le titre,
J'ai besoin de récupérer dans mon javascript des données contenues dans un fichier texte a part.
Comment et quand quelle mesure cela est-ce possible?
Merci d'avance.
Version imprimable
Tout est dans le titre,
J'ai besoin de récupérer dans mon javascript des données contenues dans un fichier texte a part.
Comment et quand quelle mesure cela est-ce possible?
Merci d'avance.
avec ajax
tu pointes sur le fichier texte, tu recupères son contenu dans le responseTExt
Ajax? le langage?
Je ne le connais absolument pas, ni la fonction que tu me donnes.
Il ne me reste plus qu'a l'apprendre?
Pas de panique ajax reste du javascript ...
http://www.developpez.net/forums/f45...ment-web/ajax/
vois cours et faq sur ce forum
Okay, je vais potasser tout ca, merci beaucoup.
Bonjour, apres pas mal de temps a voir comment marcher regexp, j'ai vu que tu avais raison, c'est l'outil qu'il me faut. Merci.
Cependant, je ne trouve pas comment chercher sur plusieurs lignes.
Je m'explique, la donnée qui m'interesse se trouve en 2e ligne du document que je dois ajouter.
Une idée de comment s'y prendre?
Encore merci pour ton aide si précieuse.
essaye de faire un split('\r\n') sur le responseText, tu devrais recupérer un array
Argh euh, ben moi je vais retourner potasser la BDD parceque je n'ai rien compris...
ResponseText, je pensais pas en avoir un en fait, je pensais que le resultat serait directement implémenté dans une var.
Et le split, si j'ai bien compris possede toujours (\r\n) en parametre.
tu veux recupérer le contenu d'un fichier texte coté client en javascript ???
l'intégralité du fichier texte se retrouve dans le responseText.
chaque fin de ligne dans un fichier texte est en general determinée par la paire \r\n
et non ce n'est pas le separateur par defaut de la focntion split ...
fait un split sur le separateur ('\r\n') et tu obtinedras un array de tes lignes ...
Pardon, je n'ai pas été clair.
En fait, mon texte s'affiche dans la page (puis est caché) dans le Html et j'ai un script en js qui n'est pas dans la page a proprement parler (j'utilise un <script src=""> .
Et donc je ne vois pas trop comment récupérer le regexp d'une ligne en particulier alors que le texte n'est pas dans le code javascript.
Peut etre que voir mon code serait plus clair?
Cependant il est assez long et sur deux pages (le Html et je script Js) et donc je ne sais pas si ce serait bien de le mettre comme cela.
c'est au moment ou tu fais l'ajax qu'il faut splitter le responseText... mais je n'ai pas parlé de regexp ...
Une derniere question et apres je me met a apprendre ce langage en accéléré.
Ce langage est uniquement la pour faire de la requete client -serveur sans rechargement de la page c'est ca?
Ce que je cherche doit se faire uniquement coté client puisque tout se fait en local et sur aucun serveur.
Désolé si ma question parait bete, mais je n'arrive vraiment pas a cerner ce langage qui permet d'utiliser le serveur alors que je ne le connait uniquement sous sa forme client.
AJAX n'est pas un langage mais l'utilisation d'un objet JavaScript éventuellement couplé à un script coté serveur.
Donc dans ton cas, c'est exclusivement du JavaScript ;)
que ce soit en local ou distant, a part une balise objet je ne vois pas d'autre solution. Ajax me semble tout indiqué pour recupérer le texte et pouvoir le traiter dans la foulée.
Faire converser javascript avec le contenu de la balise objet me semble plus compliqué ...
Okay, désolé ca m'a un peu fait peur de devoir utiliser de nouvelles notions que je ne connaissais pas (alors qu'en fait je suis censé les connaitre d'apres vos dires si c'est du Js).
Donc si je comprend bien, je dois:
-pointer vers le fichier grace a htmlRequest.open
-le retrouver dans un responseText
-et ensuite chercher dedans?
tout simplement...
Okay, merci beaucoup, désolé d'avoir été aussi long a la détente.
Bonjour,
J'ai du mal comprendre quelque chose, je n'arrive pas a obtenir mon texte:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 var xhr = null; if( window.XHTMLHttpRequest ) //Firefox // xhr = new XMLHttpRequest(); else if( window.ActiveXObject ) //IE// xhr = new ActiveXObject("Microsoft.XMLHTTP"); else { document.write('<b> <font color="#FF0000"> VOtre navigateur ne prend pas en charge la fonction désirée </font> </b>'); } xhr.open('GET', docs/CACHANLICENSE.txt, true); document.getElementById().innerHTML = xhr.responseText;
Code:xhr.open('GET', 'docs/CACHANLICENSE.txt', true);
Merci, j'avais oublié ca.
Cependant ca ne marche pas non plus, la console de FF me dit qu'xhr est null...
Citation:
window.HTMLHttpRequest
Toujours pas... :cry:
quel id au fait ?Code:document.getElementById().innerHTML
AH, j'ai corrigé ca entre temps.
J'ai mis l'id "texte" ici et dans le code html dans une div.
Attention à la sécurité crossdomain, pour tester en local je suis obligé de passer par mon serveur
Code:
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 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Nouvelle page 1</title> <script type="text/javascript"> function getXhr(){ var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr } function bar(){ var xhr = getXhr() // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ alert('essai') document.getElementById('foo').innerHTML=xhr.responseText } } xhr.open("GET","test.txt",true); xhr.send(null); } </script> </head> <body onload="bar()"> <div id="foo"></div> </body> </html>
Bon début de réponse, je n'avais pas mis de return xhr.
Mais apres correction et refonte, toujours le meme probleme d'xhr null.
Ca m'enerve, je comprends vraiment pas pourquoi il ne veux pas.
Code:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 document.write('ATTENTION! Cette page n\'est qu\'en test pour le moment, ne pas s\'y fier pour l\'instant. '); document.write('<br/><br/>'); //Declatarion // var nbs = 12; //Fonction de récupération du texte de licence // function getxhr() { var xhr = null; if( window.HTMLHttpRequest ) //Firefox // { xhr = new XMLHttpRequest(); } else if( window.ActiveXObject ) //IE// { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } else { document.write('<b> <font color="#FF0000"> Votre navigateur ne prend pas en charge la fonction désirée </font> </b>'); } return xhr; } //Programme // if(nbs == null) { document.write('Aucune donnée n\a été enregistrée'); } else { //Declaration des variables // var nbs_total = 982 var nbs_used = 235 var nbs_licensed = 412 var nbs_free = nbs_total - ( nbs_used + nbs_licensed ) //DEBUT DU PROGRAMME // // Création du tableau // document.write('<table border="0" bgcolor="#000000" width="90%" cellspacing="0" height=300>'); var i = 0; while(i < nbs) { document.write('<tr>'); // Détermination du rapport utilisé/licence // if(nbs_used > nbs_licensed) { var nbs_free = nbs_total - ( nbs_used + nbs_licensed ) var pct_licensed = ( nbs_used - nbs_licensed ) /nbs_total *100 var pct_used = ( nbs_used / nbs_total ) *100 var pct_free = ( (nbs_total - (nbs_used + (nbs_used - nbs_licensed))) / nbs_total ) *100 document.write(' <td bgcolor="#FFFFCC" width="',pct_used , '%"> <font color="#000000" > <div "align="center">',nbs_used, '</div> </font> </td>'); document.write(' <td bgcolor="#FF0000" width="',pct_licensed,'%"> <font color="#FFFFFF"> <div align="center">', pct_licensed, '</div> </font> </td>'); } else { var pct_used = ( nbs_used / nbs_total ) * 100 var pct_licensed = ( nbs_licensed - nbs_used )/ nbs_total * 100 var pct_free = ( (nbs_total - (nbs_used + ( nbs_licensed - nbs_used ))) / nbs_total ) *100 document.write(' <td bgcolor="#FFFFCC" width="',pct_used, '%"> <font color="#000000" > <div "align="center">',nbs_used, '</div> </font> </td>'); document.write(' <td bgcolor="#CC3366" width="', pct_licensed , '%"> <font color="#FFFFFF"> <div align="center">', nbs_licensed - nbs_used, '</div> </font> </td>'); } document.write(' <td bgcolor="#9966FF" width="', pct_free, '%"> <font color="#FFFFFF"> <div align="center">', nbs_free, '</div> </font> </td>'); document.write(' <tr height="1"> <td bgcolor="black" colspan="3" border="0"> <td></tr>'); document.write(' </tr>'); i++ } document.write('<tfoot> <tr> <td colspan="3"> <img src="images/tableau_histo/pourcent.jpg" width="100%" </tr> </tfoot>'); document.write('</table>'); //Test des pourcentages // document.write( 'Pourcentage utilisé: ',parseInt(pct_used) ,"% <br/>"); document.write( 'Pourcentage sous licence: ',parseInt(pct_licensed) ,"% <br/>"); document.write( 'Pourcentage libre: ',parseInt(pct_free) ,"% <br/> <br/> <br/>"); } var xhr = getxhr() xhr.open("GET", 'test.txt', true); document.getElementById(texte).innerHTML = xhr.responseText;
essaye de virer tous les document.write ...
Promsi je m'en occuperais des que cela marche, mais pour le moment je ne peux pas me le permettre, le temps commence a me presser de plus en plus a vrai dire.
Mais des que le programmes est a peu pres fonctionnel, je refais le code de manere optimisée.
tu testes en ligne ou en local ?
ton serveur est casesensitive ? casse du nom de fichier ?
le repertoire est partagé ? tu as les droits en lecture sur le fichier ?
Tout en local.
Comme je l'ai dit, il ny'a pas de serveur, ce n'est pas un site, c'est un portail et donc par consequent tout doit s'effectuer en local.
C'est pour ca que je galere, sinon j'avais juste a copier et coller les codes si vraiment je ne trouvais pas (ce qui est le cas actuellement)
tu dois avoir un serveur en local, sinon il considère que l'ajax est cross domaine
Avoir un serveur en local... C'est a dire?
que le poste sur lequel se trouve le fichier soit un serveur web et que l'on y accède par la racine du serveur ...
Bon.
Je ne sais pas faire ca, et ce n'est pas mon poste donc j'ai des restrictions.
Je pense que je vais esayer de trouver un autre moyen, ca s'avere bien compliqué de cette facon.
???
comment peut peut on espérer faire un portail web sans serveur web ???
Je ne sais pas trop comment dire, mais ce n'est pas le portail d'un site web, mais juste une page internet pour afficher le graphique que je souhaite faire.
tu peut juste afficher le texte avec une balise objectmais pas en exploiter le contenuCode:
1
2
3 <object id="foo" data="test.txt" type="text/plain" width="300" height="200"> </object>
C'est le probleme que je rencontre justement, j'affiche le texte avec un object, mais comme tu dis impossible de l'exploiter.
un debut de piste:
testé sous IE et ffx
reste plus qu'a parser avec des regExpCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Nouvelle page 1</title> <script type="text/javascript"> function bar(){ alert(self.parent.foo.document.body.innerHTML) } </script> </head> <body onload="bar()"> <iframe name='foo' id="foo" src="test.txt" width="300" height="200"> </iframe> </body> </html>
on peut même mettre le display en none
C'est la méthode a laquelle je pensais a la base (pour ca que j'ai mentionné regexp), mais le probleme de chercher sur plusieurs lignes est toujours d'actualité :mrgreen: