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,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.laCible.innerHTML = this.xmlTree.transformNode(this.xsltTree);
il faut générer une alerte !
Et oui si avant la ligne de code ci-dessus il y a tout se passe à merveille sinon une erreur est produite signalant que this.xmlTree et que this.xsltTree sont undefined !
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 :
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);
        }
    };
Evidemment il est incomplet (200 lignes); mais il devrait vous aider à trouver le problème.
Merci