Bonjour,
Je recherche un script ou un exemple qui permettrait lorsque l'on clic sur un bouton, d'exporter le contenu d'une div (texte) dans un .txt.
Merci pour votre aide,
Cordialement
Version imprimable
Bonjour,
Je recherche un script ou un exemple qui permettrait lorsque l'on clic sur un bouton, d'exporter le contenu d'une div (texte) dans un .txt.
Merci pour votre aide,
Cordialement
Ajax + php = youpi 8-)
Tu aurais un exemple de code?
C'est la base même d'AJAX ^^
pour simplifier et tester le principe, mettons que tu aies ça dans ta page:
tu ajoutes:Code:
1
2
3
4
5
6
7 <textarea id="zone"> Zone plus ou moins dynamique, pas grave. </textarea> <p> <input type="button" value="envoi" onclick="mess(document.getElementById('zone').value)" /> </p>
tu crées une page ajax.inc.php qui contient: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 <script type="text/javascript"> function mess(txt){ try{ arg="texte="+escape(txt); alert(arg) req = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); req.open("POST", "ajax.inc.php", true); req.setRequestHeader("Content-type", "application/x-www-form- urlencoded"); req.send(arg); } catch(i){ alert("Petit souci de connexion...\nVeuillez réessayer."); }; } </script>
tu crées une page vide fichier.txt.Code:
1
2
3
4
5
6 <?php $texte=$_POST['texte']; $fp = fopen ("fichier.txt", "a"); fputs ($fp, stripslashes($texte)); fclose ($fp); ?>
tu testes le bazar;
Tout d'abord merci pour tes explications.
j'ai l'erreur suivante :
"mess is not defined"
Tu as une idée du problème?
Bonjour, est ce que tu as mis le code javascript dans la partie <head></head> de ton fichier comme par exemple :
Bonne continuation!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 <html> <head><title>Div vers fichier texte</title> <script type="text/javascript"> function mess(txt){ try{ arg="texte="+escape(txt); alert(arg) req = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); req.open("POST", "ajax.inc.php", true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send(arg); } catch(i){ alert("Petit souci de connexion...\nVeuillez réessayer."); }; } </script> </head> <body> <textarea id="zone"> Zone plus ou moins dynamique, pas grave. </textarea> <p> <input type="button" value="envoi" onclick="mess(document.getElementById('zone').value)" /> </p> </body> </html>
J'ai fait cela:
il y a du xsl parce que j'affiche dans ma page des données xml. (ce sont ses données xml que j'aimerais exporter dans notepad)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 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:template match="/"> <html> <head> <script type="text/javascript" src="scriptjavascript.js"></script> <title> </title> </head> <body> <center> <table border="1" style="border-collapse: collapse" width="80%"> <tr><td bgcolor="#DBC1EC"><center><b><font size="5">Test</font></b></center></td></tr> </table> </center> <br/> <center> <FIELDSET style="width:360px;"> <LEGEND align="top"> <b>Actions possibles : </b></LEGEND> <form> <input type="button" value="envoi" onclick="mess(document.getElementById('tests').value)" /> <input type="submit" value="Save as .txt" /> <input type="submit" value="Send by email" /> </form> </FIELDSET> </center> <br/> <div id="tests"> <xsl:for-each select="//testcase"> <xsl:for-each select="node"> <xsl:for-each select="transition"> <xsl:for-each select="input"> <xsl:value-of select="@name"/> "<xsl:value-of select="dvalue/@value"/><xsl:for-each select="dvalue/dvalue"><xsl:value-of select="@value"/>","</xsl:for-each>" <br/> </xsl:for-each> <xsl:for-each select="expresultauto"> <xsl:value-of select="@name"/><br/> </xsl:for-each> </xsl:for-each> </xsl:for-each><br/> </xsl:for-each> </div> </body> </html> </xsl:template> </xsl:stylesheet>
Et c'est dans scriptjavascript.js que j'ai mis le code de la fonction:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function mess(txt){ try{ arg="texte="+escape(txt); alert(arg) req = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); req.open("POST", "ajax.inc.php", true); req.setRequestHeader("Content-type", "application/x-www-form- urlencoded"); req.send(arg); } catch(i){ alert("Petit souci de connexion...\nVeuillez réessayer."); }; }
Et ton problème persiste encore?
edit :
Tu peux montrer comment est ton xml?
Merci
Oui j'ai l'erreur que j'ai mentionnée plus haut.
"mess is not defined"
Aucune fenêtre ne s'ouvre au clic bouton.
Voici un bout du code xml:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="script.xsl" type="text/xsl"?> <TST> <TSTProp idprofile="P7" idum="1" profile="FewOnHold" tccovrequirementinlibrary="50.00 %" tsalgo="user oriented - 5 test case(s)" tscovevent="79.17 %" tscovitem="77.14 %" tscovobject="85.71 %" tscovrequirementinmodel="75.00 %" tsdatetime="17 Dec 2010 - 11:00:15" tsformat="3.8" tsname=".\TestSuites\tests.xml" typeprofile="usage" typetsalgo="user oriented" umname="\Version1\MyIC_SIP.mcm" umversion=""> <subUM id="2" name="\Version1\MyIC_InitConfig.mcm"/> </TSTProp> <suite pathRcts=".\TestSuites\tests.rcts"> <testcase id="1" pathRctc=".\TestSuites\tests_1.rctc" tccovevent="58.33 %" tccovitem="42.86 %" tccovobject="76.19 %" tccovrequirementinlibrary="16.67 %" tccovrequirementinmodel="25.00 %"> <node id="1" keypath="0" name="\Version1\MyIC_SIP.mcm"> <transition from="S9998" id="T1" name="" objectcomment="before Application start" statename="Invoke" step="1" to="S9998"/> </node> <node id="2" keypath="1" name="\Version1\InitConfig.mcm"> <transition from="S9998" id="T1" name="" statename="Invoke" step="2" to="S1"/> <transition from="S1" id="T2" name="in_InitOption" statename="initOptions" step="3" to="S2"> <input id="1" name="in_InitOption"> <dvalue ntype="NoParameters" type="charstring" value="NoParameters"/> </input> </transition>
Bonjour
Citation:
<input type="button" value="envoi" onclick="mess(document.getElementById('tests').value)" />
Un div n'a pas d'attribut value ;), utilise innerHTML.Citation:
<div id="tests">
PS: sur le forum javascript, le code HTML généré serai le bienvenue plutôt que ton xsl.
A+.
J'ai remplacé value par innerhtml mais ça ne donne toujours rien:
Code:
1
2 <input type="button" value="envoi" onclick="mess(document.getElementById('tests').innerHTML)" />
T'as mis quoi dans ton onreadystatechange ? :koi:
1-Tu ne récupères pas la valeur retournée par la requête Ajax dans un onreadysteatechange ;).
2-Montre nous le HTML généré mais pas le xsl
Le problème est que lorsque je clique sur la page généré, et que je demande le code source, j'ai le contenu du document xml de départ et non pas le code html de la page générée.
Oui mais je ne sais pas comment faire pour utiliser cette méthode?
le tutoriel :fleche: http://siddh.developpez.com/articles/ajax/#LIII
J'ai mis le code que vous m'avez indiqué mais je n'ai toujours rien au clic bouton:
Le code de script.xsl:
scriptjavascript.js: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 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:template match="/"> <html> <head> <script type="text/javascript" src="scriptjavascript.js"></script> <title> </title> </head> <body> <center> <table border="1" style="border-collapse: collapse" width="80%"> <tr><td bgcolor="#DBC1EC"><center><b><font size="5">Test</font></b></center></td></tr> </table> </center> <br/> <center> <FIELDSET style="width:360px;"> <LEGEND align="top"> <b>Actions possibles : </b></LEGEND> <form> <input type="button" value="envoi" onclick="go()" /> <input type="submit" value="Save as .txt" /> <input type="submit" value="Send by email" /> </form> </FIELDSET> </center> <br/> <div id="tests"> <xsl:for-each select="//testcase"> <xsl:for-each select="node"> <xsl:for-each select="transition"> <xsl:for-each select="input"> <xsl:value-of select="@name"/> "<xsl:value-of select="dvalue/@value"/><xsl:for-each select="dvalue/dvalue"><xsl:value-of select="@value"/>","</xsl:for-each>" <br/> </xsl:for-each> <xsl:for-each select="expresultauto"> <xsl:value-of select="@name"/><br/> </xsl:for-each> </xsl:for-each> </xsl:for-each><br/> </xsl:for-each> </div> </body> </html> </xsl:template> </xsl:stylesheet>
Et j'ai même éssayer avec ajax.php comme dans l'exemple et je n'ai toujours pas de fenêtre qui s'affiche. J'ai l'impression que le code html dans du xsl c'est pas le top..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 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 } /** * Méthode qui sera appelée sur le click du bouton */ function go(){ 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(xhr.responseText); } } xhr.open("GET","C:\\WINDOWS\\Notepad.exe",true); xhr.send(null); }
J'ai l'erreur suivante avec la console de debug javascript de firefox:
Erreur*: uncaught exception: [Exception... "Component returned failure code: 0x805e000a [nsIXMLHttpRequest.open]" nsresult: "0x805e000a (<unknown>)" location: "JS frame :: file:///C:/Users/Test/Desktop/Parser/scriptjavascript.js :: go :: line 41" data: no]
:koi:Citation:
xhr.open("GET","C:\\WINDOWS\\Notepad.exe",true);
C'est le fichier php que tu appelles sur le serveur que tu dois mettre dans l'URL.
Ton ancien code est proche de ton besoin que ce dernier, sauf que tu dois seulement ajouter le traitement de retour avec le onreadystatechange.