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] propriété responseXml est null


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Par défaut [AJAX] propriété responseXml est null
    Bonjour,

    je débute avec la classe XMLHttpRequest, et maintenant il faut que j'utilise la propriété responseXml pour gérer la réponse en xml.

    responseText est contient bien ce que le serveur renvoit, par contre responseXml est null. Voici ce que la console d'erreur d'opéra m'indique:


    et celle de firefox:
    Erreur : test_requete.responseXml has no properties
    Fichier source : http://localhost/tchat.html
    Ligne : 66
    Pourtant le fichier php que j'ai créé sur le serveur me renvois bien du xml. Voici un exemple de code qu'il renvoit:
    <?xml version="1.0" encoding="utf-8"?>
    <tchat><message date="1152726900" author="Will">Ceci est un essai !</message><message date="1152727800" author="Benoit">Je vois ça</message><message date="1152800000" author="Will">encore un test</message><message author="Will" date="1172578968">ceci est un test</message><message author="Will" date="1172579508">nkj,njk</message><message author="Will" date="1172580132">test</message><message author="Will" date="1172580572">test</message><message author="Will" date="1172580680">jjkbn</message></tchat>
    Et Firefox le voit bien comme un fichier xml, d'ailleur l'entête http est bien "Content-Type: text/xml".

    Voici le javascript:
    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
    function cytchat_read_messages()
    {
    	var test_requete = null;
     
    	if (window.XMLHttpRequest)
    		test_requete = new XMLHttpRequest();
    	else
    	{
    		if (window.ActiveXObject)
    			test_requete = new ActiveXObject("Microsoft.XMLHTTP");
    	}
     
    	if (test_requete != null)
    	{
     
    		var tchat_zone = document.getElementById("cytchat_tchat_zone");
     
    		var nb_message = document.getElementById("cytchat_tchat_zone").childNodes.length;
     
    		if (nb_message > 0)
    		{
    			nb_message = nb_message / 2;
    		}
     
    		test_requete.onreadystatechange = function ()
    		{
    			if (test_requete.readyState == 4)
    			{
    				tab_messages = test_requete.responseXml.getElementsByTagName("message");
     
    				for (i=0 ; i < tab_messages.length ; i++)
    				{
    					message_author = tab_messages[i].getAttribute("author");
    					message_dialog = tab_messages[i].firstChild.nodeValue;
     
    					new_message = document.createTextNode(message_author + " : " + message_dialog );
    					separator = document.createElement("br");
     
    					tchat_zone.appendChild(new_message);
    					tchat_zone.appendChild(separator);
    				}
    			}
    		};
    		previous_message = nb_message - 1;
    		test_requete.open("GET", "http://localhost/tchat.php?action=read&previous=" + previous_message, true);
    		test_requete.send(null);
    	}
    }
    la ligne sur laquelle ça coince c'est donc celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_messages = test_requete.responseXml.getElementsByTagName("message");
    Apprement responseXml est vide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Par défaut
    Je viens de me rendre compte que sous IE ça fonctionne (mis à part un problème de cache qui est règlé).

    Je vois vraiment pas pk sous firefox et opera, responseXml est vide.

  3. #3
    Membre éclairé Avatar de sorenson
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    tu doit avoir un problème d'activeX. Essai ma fonction :

    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
     
    function detectHttpreq(){
      var xhr=null;
      //Vérifie si le navigateur possède sa propre gestion du processus.
      if(window.XMLHttpRequest){
    	xhr=new XMLHttpRequest();
    	return xhr;
      }else if(window.ActiveXObject){
       //Tableau des différentes versions de l'ActiveX.
       var tabVersions=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
       //Recherche de la bonne version sur le poste utilisateur.
       for(i=0; i<tabVersions.length; i++){	   
    	try{		
    		xhr=new ActiveXObject(tabVersions[i]);  	    
    		return xhr;
    	 }catch (oError){
    		//ne rien faire;		
    	 }
       }
    }
    }

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    il est toujours judicieux de tester les erreurs xml avant d'utiliser le contenu

    A+JYT

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/06/2009, 13h38
  2. [ajax] xhr.responseXML == null ?!
    Par XecTech dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/08/2006, 17h22
  3. Réponses: 19
    Dernier message: 26/01/2005, 10h41
  4. pb de jointure : cas ou une clé étrangère est à NULL
    Par tiboleo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/11/2004, 11h31
  5. Tester si un champ est NULL
    Par titititi007 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2003, 10h17

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