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

AJAX Discussion :

[AJAX] Récupérer les infos d'un xml


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut [AJAX] Récupérer les infos d'un xml
    Bonjour, je souhaite récupérer les valeurs mac, ip et port de chaque client dans un fichier xml pour les insérer un à un dans une page html, mais je galère.

    Exemple : (Il peut y avoir plus de client)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <info>
    	<lan>
    		<client>
    			<mac>00:11:00:11:00:11</mac>
    			<ip>192.168.1.20</ip>
    			<port>wlan0</port>
    		</client>
    		<client>
    			<mac>00:00:00:00:00:00</mac>
    			<ip>192.168.1.30</ip>
    			<port>wlan0</port>
    		</client>
    	</lan>
    </info>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function info()
    {
    		var doc = "...";
    		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    		xmlDoc.async = false;
    		if(xmlDoc.load(doc))
    		 {
     
    		 }
    }
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Le tutoriel :
    Ajax : Vos premiers pas dans les nouvelles technologies

    Bonne lecture,
    A+.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci pour votre réponse.
    Le problème est que je n'arrive pas à faire fonctionner cet exemple qui est pourtant simple. Est-il possible de mettre une archive contenant les fichiers de cet exemple ?

    Merci et désolé mais je ne vois pas pourquoi ça ne marche pas.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,
    Merci et désolé mais je ne vois pas pourquoi ça ne marche pas.
    Tu peux nous montrer ce que tu as faits pour t'aider?
    A+.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <html>
    <body>
    <div id="content"</div>
     
    <script>
    var xhr = getXMLHttpRequest();
    xhr.onreadystatechange = handleHttpResponse;
    var url = "dvd.xml";
    xhr.open("GET", url, true);
     
    function handleHttpResponse() {
        if(xhr.readyState == 4 && xhr.status == 200)
    	 {
            response     = cleanXML(xhr.responseXML.documentElement);
    		var items    = response.getElementsByTagName("item");
    		var html     = ''; 
    		count        = items.length;
    		for(i = 0; i < count; i++)
    		 {
    			html += '<div class="item">';
    			html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    			html += '<div class="author">R&eacute;alisateur : ';
    			html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    			html += '<div class="price">Prix : ';
    			html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    			html += '</div>';
    		 }
    	document.getElementById('content').innerHTML += html;
         }
    }
    </script>
     
    </body>
    </html>

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il manque le send()

    Ensuite, ta façon de procéder est très maladroite, codé ainsi, ton appel AJAX ne pourra être lancé qu'une fois au moment où le navigateur interprètera ton script or dans ce cas, passer par AJAX est inutile, il est préférable d'effectuer directement le traitement coté serveur !
    Tu devrais donc placer ton script dans une fonction puis l'appeler sur une action de l'utilisateur.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Tu parles bien du "xhr.send(null);" ?
    Ça ne marche toujours pas.
    Décidément, il faut que je dorme

    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
    <html>
    <body>
    <div id="content"</div>
     
    <script>
    var xhr = getXMLHttpRequest();
    xhr.onreadystatechange = handleHttpResponse;
    var url = "dvd.xml";
    xhr.open("GET", url, true);
    xhr.send(null);
     
    function handleHttpResponse() {
        if(xhr.readyState == 4 && xhr.status == 200)
    	 {
            response = cleanXML(xhr.responseXML.documentElement);
    		var items = response.getElementsByTagName("item");
    		var html = ''; 
    		count = items.length;
    		for(i = 0; i < count; i++)
    		 {
    			html += '<div class="item">';
    			html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    			html += '<div class="author">R&eacute;alisateur : ';
    			html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    			html += '<div class="price">Prix : ';
    			html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    			html += '</div>';
    		 }
    	document.getElementById('content').innerHTML += html;
         }
    }
    </script>
     
    </body>
    </html>

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function handleHttpResponse()
    Et cette fonction, elle est appelée quand ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Et cette fonction, elle est appelée quand ?
    xhr.onreadystatechange = handleHttpResponse;
    Par contre
    var xhr = getXMLHttpRequest();
    Il est où la fonction getXMLHttpRequest ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    ?? Je suis un peu perdu. Donc pour ie je peux directement mettre :

    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
    <html>
    <body>
    <div id="content"</div>
     
    <script>
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = handleHttpResponse;
    var url = "dvd.xml";
    xhr.open("GET", url, true);
    xhr.send(null);
     
    function handleHttpResponse() {
        if(xhr.readyState == 4 && xhr.status == 200)
    	 {
            response = cleanXML(xhr.responseXML.documentElement);
    		var items = response.getElementsByTagName("item");
    		var html = ''; 
    		count = items.length;
    		for(i = 0; i < count; i++)
    		 {
    			html += '<div class="item">';
    			html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    			html += '<div class="author">R&eacute;alisateur : ';
    			html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    			html += '<div class="price">Prix : ';
    			html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    			html += '</div>';
    		 }
    	document.getElementById('content').innerHTML += html;
         }
    }
    </script>
     
    </body>
    </html>
    Mais ça ne fonctionne toujours pas.

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    var xhr = new XMLHttpRequest();
    C'est pour les autres navigateurs que IE.
    Faits une fonction d'instanciation d'un XMLHttpRequest comme dans les tutoriels puis appelles la dans une fonction qui va faire la requete ajax, enfin tu appelles la fonction ajax dans le onload du body.

    A+.

  12. #12
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    C'est pour les autres navigateurs que IE.
    Plus exactement pour IE<=6. XMLHttpRequest est implémenté par IE depuis la version 7
    Citation Envoyé par 35niavlys Voir le message
    Bonjour, je souhaite récupérer les valeurs mac, ip et port de chaque client dans un fichier xml pour les insérer un à un dans une page html, mais je galère.
    Citation Envoyé par 35niavlys Voir le message
    Mais ça ne fonctionne toujours pas.
    Si tu étais un peu plus explicite sur ce qui ne marche pas, ça nous aiderait grandement pour t'aider...
    Donc, qu'est-ce que tu obtiens ? Qu'est-ce qui ne marche pas ? Quels sont les messages d'erreur ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    La page que j'ouvre est blanche (sous ie 8 ou firefox) sachant que j'utilise l'exemple précédant pour commencer.

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,
    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
    <html>
    <head>
    <script type="text/javascript">
     
    function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr
    			}
    			function go(){
    				var xhr = getXhr()
    				xhr.onreadystatechange = function(){
    					if(xhr.readyState == 4 && xhr.status == 200){
    						var listes=xhr.responseXML;
    						var items = listes.getElementsByTagName("client");
    						var html = ''; 
    						for(i = 0; i < items.length; i++)
    						 {
    							html += '<div class="item">';
    							html += 'mac: '+ items[i].getElementsByTagName("mac")[0].firstChild.nodeValue;
    							html += '<div>Ip:';
    							html += items[i].getElementsByTagName("ip")[0].firstChild.nodeValue + '</div>';
    							html += '<div>Port : ';
    							html += items[i].getElementsByTagName("port")[0].firstChild.nodeValue + '</div>';
    							html += '</div>';
    						 }
    					document.getElementById('content').innerHTML += html;
     
    					}
    				}
    				//ton fichier xml
    				xhr.open("GET","tonFichier.xml",true);
    				xhr.send(null);
    			}
    </script>
    </head>
    <body onload="go()">
    <div id="content"></div>
    </body>
    </html>

  15. #15
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    ie me dit que "reponse" non définie.

    Dans le tuto, il y avait cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response = cleanXML(xhr.responseXML.documentElement);
    Du coup j'ai enlever la fonction cleanXML et ça merche sous ie mais pas sous firefox mais c'est pas grave.

    Merci beaucoup pour votre aide, je pense qu'il faudrait être plus précis sur le tuto.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Comment ce fait-il que le css ne s'applique pas sur ce qui est envoyé ?

  17. #17
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Personne a une idée car là je ne vois pas du tout pourquoi ça ne fonctionne pas.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Ça fonctionne avec DOM.

    A+

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

Discussions similaires

  1. Comment récupérer les infos de faces-config.xml
    Par scorplayer dans le forum JSF
    Réponses: 4
    Dernier message: 05/01/2010, 12h31
  2. [AJAX] Récupérer les xml:id dans des div id
    Par Andro dans le forum AJAX
    Réponses: 2
    Dernier message: 29/12/2009, 10h12
  3. Réponses: 21
    Dernier message: 22/07/2009, 14h19
  4. [AJAX] Récupérer les valeurs d'un XML
    Par cloud76 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/01/2009, 07h20
  5. Réponses: 6
    Dernier message: 23/12/2003, 15h30

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