Bonjour,
j'utilise une page web avec un javascript pour afficher un fichier XML via XSL
ce JS est appelé au chargement de la page avec la directive
<body onload="....">
ci dessous mes javascripts:
et le code HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else { xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",dname,false); xhttp.send(""); return xhttp.responseXML; } function displayResult(sigle,valeur) { document.getElementById("content").innerHTML=''; xmlfile="test.xml"; xslfile="srfil.xsl"; xml=loadXMLDoc(xmlfile); xsl=loadXMLDoc(xslfile); // code for Mozilla, Firefox, Opera, etc. if (document.implementation && document.implementation.createDocument) { xsltProcessor=new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); if ( sigle != "" && valeur != "") { xsltProcessor.setParameter(null, "filtresigle", sigle); xsltProcessor.setParameter(null, "filtrevalue", valeur); xsltProcessor.setParameter(null, "gofiltre", 1); } else { xsltProcessor.setParameter(null, "gofiltre", 0); } resultDocument = xsltProcessor.transformToFragment(xml,document); document.getElementById("content").appendChild(resultDocument); } } function valider() { // si la valeur des champ est non vide if(document.filtre.sigle.value != "" && document.filtre.valeur.value != "") { // les données sont ok, on peut envoyer le formulaire displayResult(document.filtre.sigle.value,document.filtre.valeur.value); } else { // sinon on affiche un message alert("Saisissez les données"); // et on indique de ne pas envoyer le formulaire return false; } }
Au chargement initial de la page, le fichier XML est correctement affiché via l'appel au script "DisplayResult".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <body onload="displayResult()"> <div id="header"> <h1>Décodage SRFIL</h1> <h2>Test.log</h2> </div> <div id="filtre"> <h3>Filtre</h3> <form name="filtre" action="" onsubmit="return valider()" method="get"> <p> <label for="sigle">Sigle :</label> <input type="text" name="sigle" value="" /> <label for="valeur">Valeur :</label> <input type="text" name="valeur" value="" /> <input type="submit" value="Ok" /> </p> </form> </div> <div id="content" /> </body>
On n'y passe pas de paramètres (ceux-ci servent à ajouter des filtres pour l'affichages des données XML)
Le formulaire sert pour l'utilisateur pour qu'il puisse filtrer l'affichage des données XML.
les valeurs sont correctement récupérée par le script "valider".
Dès validation du formulaire, le filtrage se passe bien (j'ai un rafraichissement de la div "content" avec les données filtrées.
par contre quelques instant plus tard, j'ai un refresh complet de la page, sans les données de filtrage...
j'ai essayé de retirer la directive "onload" dans la balise <body>, mais cela ne change rien...
Partager