IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Souci responseXML sous IE


Sujet :

JavaScript

  1. #1
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut [AJAX] Souci responseXML sous IE
    Bonjour,

    j'ai un souci lors du traitement de responseXML sur un xml généré par une servlet :

    Ci-dessous un morceau du xml généré.

    C'est complètement fonctionnel avec FF, mais IE6, me jette.

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <tab>
    	<entete>
    		<colonne>Numero</colonne>
    		<colonne>Date</colonne>		<colonne>Operateur</colonne>
    		<colonne>Libelle</colonne>
    		<colonne>Nature</colonne>
    		<colonne>Type</colonne>
    		<colonne>Evenement</colonne>
    <colonne>Rapport</colonne>	</entete>	<Evenements>
    		<Evt>
    			<Numero>22</Numero>
    			<Date>2007-02-13 11:13:21.0</Date>
    			<Operateur>olivier</Operateur>
    			<Libelle></Libelle>
    			<Nature>feu</Nature>
    			<Type>incendie</Type>
    			<Evenement>niveau 1</Evenement>
                            <Rapport>NONE</Rapport>		
                   </Evt>
    .....

    J'appelle ces deux fonctions pour constituer mes documents DOM et XSLT
    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
    GetxmlDoc = function()
    {
    xmlDoc = null;
      var xhr_object = CreerInstanceAjax(); 
     
        xhr_object.open("POST","Control2?action=MCGetEvenementX&etape=xmlDoc",true);    		
     	// Ce code s'execute lorsque la reponse arrive.  
     
     
     	xhr_object.onreadystatechange = function() 
     	{    
        	if(xhr_object.readyState == 4) 
        	{     	
        		if (xhr_object.status==200)
        		{
        			alert("xmlDoc statut 200 : OK");
    	    		xmlDoc = xhr_object.responseXML;
    				alert("nb elements direct fils xmlDoc : "+xmlDoc.childNodes.length);
     
    	    		if(xslDoc != null && xmlDoc != null)
    	    		{
    		    		alert('xml : deux non null');
    		    		display();
         	 		} 
     			}
     		} 		
    	} 	 	 
     xhr_object.send(null);    						
    }
     
     
    GetxslDoc = function()
    {
    	xslDoc=null;
      var xhr_object = CreerInstanceAjax(); 
     
        xhr_object.open("POST","Control2?action=MCGetEvenementX&etape=xslDoc",true);    		
     
     	xhr_object.onreadystatechange = function() 
     	{    
        	if(xhr_object.readyState == 4) 
        	{     	
        		if( (xhr_object.responseText!="AUCUN") )
        		{
    				xslDoc = xhr_object.responseXML;
    				alert("nb elements direct fils xslDoc : "+xslDoc.childNodes.length);
     
    	    		if(xslDoc != null && xmlDoc != null)
    	    		{
    		    		alert('xsl : deux non null');
    		    		display();
    	    		}
         	 	} 
     		} 		
    	} 	 	 
     xhr_object.send(null);    						
    }
    A un moment, les deux son non nuls, je rentre alors dans le display()

    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
    display = function()
    {
    	alert('display');
    	var outPut = document.getElementById("output");
    	alert("outPut "+outPut);
    	try // IE
    	{
    		alert('ie');
    		outPut.innerHTML = null;
    		alert('ie2');
    		outPut.innerHTML = "toto";
    		alert('ie2.5');
    		alert("nb colonnes : "+xmlDoc.getElementsByTagName("Colonne").length);
    		outPut.innerHTML = xmlDoc.transformNode(xslDoc);
    		alert('ie3');
    	}
    	catch(exc)// Mozilla
    	{
    		try
    		{
    			alert('Firefox');
    			var xsltProcessor = new XSLTProcessor();									
    			xsltProcessor.importStylesheet(xslDoc);
    			var fragment = xsltProcessor.transformToFragment(xmlDoc, document);
    			outPut.appendChild(fragment);
    			majbutton();
     
    		}
    		catch(exc)
    		{
    		alert('fonction display Exception');
    		}
    	}
    }// fin de display
    Et cette instruction leve une exception sous IE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    outPut.innerHTML = xmlDoc.transformNode(xslDoc);
    Je signale que je construis mon objet xhr-request correcement, en tenant compte de IE et de FF.

    Merci aux bonnes ames aptes à m'aider ^^

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    j'utilise ceci
    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
       // retourne un objet DOM (voir W3C) s'il n'y a pas d'erreur de parsing xml
       this.getXml = function () {
          // ajout KL
          if (this.xmlhttp.responseXML && 
              this.xmlhttp.responseXML.parseError && 
             (this.xmlhttp.responseXML.parseError.errorCode !=0)) {
             return null;
          } else {
             return this.xmlhttp.responseXML;
          }
       }
     
      this.getXmlError = function () {
        if (this.xmlhttp.responseXML.parseError.errorCode !=0 ) {
          erreur = this.xmlhttp.responseXML.parseError.reason;
          erreur = erreur + " à la ligne : " + this.xmlhttp.responseXML.parseError.line;
          erreur = erreur + " position " + this.xmlhttp.responseXML.parseError.linepos;
          erreur = erreur + " " + this.xmlhttp.responseXML.parseError.srcText;
          return erreur;
        } else {
          return "";
        }
      }
    qui me permet de récupérer le XML et les erreurs de parssing s'il y en a
    A+JYT

Discussions similaires

  1. [AJAX] Pb responseXML sous IE
    Par lenoil dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/07/2007, 14h10
  2. [AJAX] livreor OK sous ff mauvais sous ie
    Par dj-julio dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/11/2006, 18h45
  3. [ajax] xhr.responseXML == null ?!
    Par XecTech dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/08/2006, 17h22
  4. [AJAX] Soucis de fonctionnement de Ajax
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/06/2006, 14h39
  5. Souci installation sous Ubuntu
    Par Christophe Charron dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 06/04/2006, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo