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] Erreur docXML has no properties


Sujet :

JavaScript

  1. #1
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut [AJAX] Erreur docXML has no properties
    Bonjour,

    Voici mon code source de base(quasi identitique au tutorial)

    dans l'entete de ma feuille html, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <script type="text/javascript" src="ajax_test.js"></script>
    <p>
    <a href="javascript:ajax_fonct();">test</a>
    </script>
     
    <script language="javascript" type="text/javascript" src="../../../classes/tiny_mce/tiny_mce.js"></script>
    </script>
    d'un autre coté, j'ai créé un fichier ajax_test.js
    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
     
    function ajax_fonct()
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
     
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { alert_ajax(xhr); };
     
        //on appelle le fichier reponse.txt
        xhr.open("GET", "exemple.php", true);
        //xhr.send(null);
     
    }
     
    function alert_ajax(xhr)
    {
    	var docXML= xhr.responseXML;
    	var items = docXML.getElementsByTagName("donnee");     <--- ya pas un ";" d'oublié?
    	//on fait juste une boucle sur chaque élément donnee trouve
    	for (i=0;i<items.length;i++)
    	{
    		alert (items.item(i).firstChild.data);
    	}
    	//alert(xhr.responseText);
    }
    et encore un fichier exemple.php pour l'appel de la base de données.
    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
     
    <?php
    header('Content-Type: text/xml'); 
    echo "<?xml version=\"1.0\"?>\n";
    echo "<exemple>\n";
     
    //on connecte a la BDD
    $dbhost="localhost";
    $dbuser="root";
    $dbpass="root ";
     
    $dblink=mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db("base_test",$dblink);
     
    //on lance la requete
    $query = "SELECT * FROM clients";
    $result = mysql_query($query,$dblink) or die (mysql_error($dblink));
     
    //On boucle sur le resultat
    while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
            echo "<donnee>" . $row[1] . "</donnee>\n";
    }
    echo "</exemple>\n";
     
    ?>
    Pourquoi cette erreur??? je n'arrive pas à comprendre :/

    Merci infiniment...
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  2. #2
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    As tu essayé en "concaténant" au sein d'une variable
    le code xml et ensuite simplement faire un echo de cette variable
    qui contiendra donc tout le code XML ?

  3. #3
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Peut-être que dans la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<donnee>" . $row[1] . "</donnee>\n";
    $row[1] contient des caractères sensibles pour le xml (&, <, >...).

    Essaye avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<donnee>" . htmlspecialchars($row[1]) . "</donnee>\n";

  4. #4
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    je vois pas comment faire....
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  5. #5
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function alert_ajax(xhr)
    {
    	if(xhr.responseXML){
    		var docXML= xhr.responseXML;
    		var items = docXML.getElementsByTagName("donnee");
    		//on fait juste une boucle sur chaque élément donnee trouve
    		for (i=0;i<items.length;i++)
    		{
    			alert (items.item(i).firstChild.data);
    		}
    	}else
    		//Mise en évidence de possibles problèmes
    		document.body.innerHTML = xhr.responseText;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //On boucle sur le resultat
    while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
    	// CData node pour éviter à XML de parser de potentiels caractères sensibles.
    	echo "<donnee><![CDATA[" . $row[1] . "]]></donnee>\n";
    }
    Voilà, c'est déjà un bon début, selon moi.

  6. #6
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    ca le revient toujours avec la meme erreur lors du debobage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    25 var items = docXML.getAttribute("donnee");
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  7. #7
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    personne peut m'aider?
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  8. #8
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Citation Envoyé par wkd
    ca le revient toujours avec la meme erreur lors du debobage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    25 var items = docXML.getAttribute("donnee");
    Dans ton code XML, ce que je vois, c'est que "donnee" est un noeud, pas un attribut.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    salut,

    je rajouterais également que le dtd de ton fichier xml n'est pas spécifié, donc même en passant par un getElementByTagName tu aurais une erreur puisque ton fichier xml n'est pas valide en tant que tel...

    il est certes bien formé, mais pas valide...

    le dtd peut être déclaré en fichier externe ou dans l'en-tête du fichier xml (ou pseudo fichier puisque généré dans ton cas par un script php - mais c'est pareil) un petit peu à la manière des css... le premier tuto sur le dtd des xml te donnera la marche à suivre pour les deux solutions. A toi de choisir

    Une fois ton dtd spécifié et ton getAttribute remplacé par un getElementByTagName, ton problème devrait être résolu
    Conception et hébergement de votre site Web : http://www.jvprod.fr !

  10. #10
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    j'ai mis getElementsByName mais ca ne change pas du tout le probleme de l'instanciation créé docXML
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  11. #11
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    En principe une erreur "docXML has no properties" est dûe à un xml non valide ou mal formé.

    As-tu essayé de visualiser directement le xml depuis le navigateur (par exemple: http://monsitelocal/exemple.php).

    D'ailleurs je viens de voir dans le bloc de code du exemple.php y'a un saut de ligne avant <?php, vu qu'il y a un header() en dessous ça doit provoquer un warning si le saut de ligne existe aussi dans ton fichier, et du coup invalider ton xml.

  12. #12
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    merci Nighty! et les autres aussi

    c'etait bien à propos de l'espace et le header
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut peut-être trouvé!
    Salut amigos!!
    J'ai testé ce tutorial, et moi aussi, avec les exemples donnés, j'ai une erreur du type :"docXML has no propertie", sauf pour l'exemple 5 du tutorial qui comporte un test de plus : dans la fonction alert_ajax.

    if (xhr.readyState==4)
    {
    }

    Voila a pu d'erreurs pour moi. Bye!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/10/2008, 18h07
  2. [AJAX] Erreur : docXML has no properties
    Par lutix dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/01/2008, 13h35
  3. [Dojo] Erreur « elements has no properties »
    Par fayred dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 20/09/2007, 18h24
  4. [DOM] liste déroulante et erreur ".selectedIndex has no properties
    Par Henry9 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/08/2007, 20h11
  5. Réponses: 2
    Dernier message: 07/01/2007, 12h22

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