Bonjour,
Tout fonctionne à merveille sauf que :
A l'aide de XMLHttpRequest nous chargeons dans deux "variables" (this.xmlTree et this.xsltTree) des données xml (dont la feuille de style xslt).
Une méthode de l'objet, this.affiche() sert à afficher le résultat de la transformation.
Le hic c'est que pour pouvoir afficher le résultat de la transformation,il faut générer une alerte !
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.laCible.innerHTML = this.xmlTree.transformNode(this.xsltTree);
Et oui si avant la ligne de code ci-dessus il y atout se passe à merveille sinon une erreur est produite signalant que this.xmlTree et que this.xsltTree sont undefined !
Code : Sélectionner tout - Visualiser dans une fenêtre à part alert(this.al);
Pourtant, Firebugg montre bien que le code xml et xslt ont bien étaient importés via thiscurrent.xsltTree = x.responseXML;
Mon client évidemment ne veut pas de l'alerte et j'aimerais réussir l'opération sans elle.
Sans doute alert() appelle-t-elle le coeur de l'appli est met les variables à jour ? Je pense que vous devriez pouvoir m'aider...
Voici la partie du code :
Evidemment il est incomplet (200 lignes); mais il devrait vous aider à trouver le problème.
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 function ObF8(){ this.leMessage = ''; this.ReReg = []; this.xmlTree = null; this.xsltTree = null; this.laCible = document.getElementById('but'); this.al = 'Un instant'; this.F8traitement(but.name, veur); this.F8xslt('/etXslt/chCli.xsl'); this.Affiche(); } }; ObF8.prototype.F8traitement = function(champ, valeur){ //rien d'intéressant ici var x = ajx(); var thiscurrent = this;//pour fermetures x.open("post", "ajax.php", true); x.onreadystatechange = function(){ if((x.readyState == 4)&& (x.status == 200)){ thiscurrent.xmlTree = x.responseXML; } }; x.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); x.send(param); }; ObF8.prototype.F8xslt = function(url){ var x = ajx(); var thiscurrent = this;//pour fermetures x.open("get", url, true); x.onreadystatechange = function(){ if((x.readyState == 4)&& (x.status == 200)){ thiscurrent.xsltTree = x.responseXML; } }; x.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); x.send(""); }; ObF8.prototype.Affiche = function(){ alert(this.al);//C'EST ICI ! SANS CETTE ALERTE RIEN NE MARCHE, AVEC TOUT FONCTIONNE 0 MERVEILLE... try{ this.laCible.innerHTML = this.xmlTree.transformNode(this.xsltTree); }catch(exc){ var xsltProc = new XSLTProcessor(); xsltProc.importStylesheet(this.xsltTree); var fragment = xsltProc.transformToFragment(this.xmlTree, document); this.laCible.innerHTML = ""; this.laCible.appendChild(fragment); } };
Merci
Partager