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 :

Récupérer le contenu d'un xml distant


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut Récupérer le contenu d'un xml distant
    Salut,

    Est-ce que c'est possible de récupérer le contenu d'un fichier XML distant et le mettre dans une zone de texte (textarea) en utilisant javascript ou bien ajax ?

    J'ai essayé plein d'exemples mais rien ne marche

    ps : je suis nulle en ajax je copie juste les codes des exemples pour les testés mais j'oubtien rien

    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par sara21 Voir le message
    Salut,

    Est-ce que c'est possible de récupérer le contenu d'un fichier XML distant et le mettre dans une zone de texte (textarea) en utilisant javascript ou bien ajax ?

    J'ai essayé plein d'exemples mais rien ne marche

    ps : je suis nulle en ajax je copie juste les codes des exemples pour les testés mais j'oubtien rien

    Merci d'avance pour votre aide
    par exemple avec jQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $.get("URL_OF_REMOTE_XML", { dataType: "xml" }, function(xmlReturnVal){ 
      if (xmlReturnVal != null) {            
        $("#ID_OF_TEXT_AREA").html( xmlReturnVal ) ;
      }
    });

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Bonsoir,

    j'ai essayé ce 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
    <html>
    <head>
    <script type="text/javascript" src="jquery.js"></script>
    </head>
    <body>
    <textarea name="txt1" id="txt1" cols="50" rows="5"></textarea>
    <script type="text/javascript">
    $.get("http://alloshare.com/data.xml", { dataType: "xml" }, function(xmlReturnVal){ 
      if (xmlReturnVal != null) {            
        $("#txt1").html( xmlReturnVal ) ;
      }
    });
    </script>
    </body>
    </html>
    avec le version 1.2.6 de jQuery mais le textArea reste vide

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ce ne serait pas value plutot pour un textarea ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par sara21 Voir le message
    Bonsoir,

    j'ai essayé ce 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
    <html>
    <head>
    <script type="text/javascript" src="jquery.js"></script>
    </head>
    <body>
    <textarea name="txt1" id="txt1" cols="50" rows="5"></textarea>
    <script type="text/javascript">
    $.get("http://alloshare.com/data.xml", { dataType: "xml" }, function(xmlReturnVal){ 
      if (xmlReturnVal != null) {            
        $("#txt1").html( xmlReturnVal ) ;
      }
    });
    </script>
    </body>
    </html>
    avec le version 1.2.6 de jQuery mais le textArea reste vide
    ça fonctionne ici avec 2 différences :

    a. le $.get est dans le document.ready() de jquery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $(function(){
     $.get …
    }
    b. l'url est un php qui génère un xml et non un fichier xml…

    (à mon avis cela vient du b. … en déchargeant le fichier le header http est
    Content-Type: application/xml
    avec le PHP c'est
    Content-Type: text/html
    )

  6. #6
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Plutot que d'utiliser JQuery juste pour ca, regarde ici comment faire ca à la main

  7. #7
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Plutot que d'utiliser JQuery juste pour ca, regarde ici comment faire ca à la main
    Entièrement d'accord.

    Sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $.get("http://alloshare.com/data.xml", { dataType: "xml" }, function(xmlReturnVal){ 
      if (xmlReturnVal != null) {            
        $("#txt1").html( xmlReturnVal ) ;
      }
    });
    Si ton xml est en dehors de ton domaine, c'est normal que tu ne puisses pas le récupérer, javascript ne permet pas de récupérer des données hors domaine (Same Origin Policy).
    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

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Oui effectivement le fichier XML n’est pas sur mon domaine.
    Je peux récupérer son contenu avec php mais le contenu change selon l’ip du visiteur, et j’aimerais que chaque visiteur de mon site puisse l’ouvrir par son ip et ensuite m’envoi ce contenu à mon script pour le traiter.

    Est-ce que cette méthode peut marcher dans ce cas ?
    Citation Envoyé par DoubleU Voir le message
    Plutot que d'utiliser JQuery juste pour ca, regarde ici comment faire ca à la main

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par sara21 Voir le message
    Oui effectivement le fichier XML n’est pas sur mon domaine.
    Je peux récupérer son contenu avec php mais le contenu change selon l’ip du visiteur, et j’aimerais que chaque visiteur de mon site puisse l’ouvrir par son ip et ensuite m’envoi ce contenu à mon script pour le traiter.

    Est-ce que cette méthode peut marcher dans ce cas ?
    pas de manière simple et transparente pour l'utilisateur…

    ce genre de services (dépendant de l'ip du browser…) devrait renvoyer du JSON et non du XML…
    auquel cas jQuery.getJSON (ou le "getJSON" celui d'une autre lib) résolverait votre problème…

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Salut,
    J’ai essayé de trouver des exemples avec JSON mais sans résultats par contre j’ai découvert la fonction load mais ça ne marche pas pour les XML !

    Exemple avec un fichier XML distant : Ne marche pas
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>TEST</title>
    <script type="text/javascript" src="jquery.js"></script>
    </head>
     
    <body>
    <div id="div1"></div>
    <script type="text/javascript">
    //<![CDATA[
    $('#div1').load('http://alloshare.com/data.xml');
    // ]]>
    </script>
    </body>
    </html>
    Exemple avec un fichier html distant : Marche
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>TEST</title>
    <script type="text/javascript" src="jquery.js"></script>
    </head>
     
    <body>
    <div id="div1"></div>
    <script type="text/javascript">
    //<![CDATA[
    $('#div1').load('http://www.developpez.com/index.php');
    // ]]>
    </script>
    </body>
    </html>
    Pouvais vous me donner un exemple sur l’utilisation de JSON avec mon cas ?

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par sara21 Voir le message
    Pouvais vous me donner un exemple sur l’utilisation de JSON avec mon cas ?
    alloshare.com a une version JSON de leur service ?

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    alloshare.com a une version JSON de leur service ?
    Salut,

    Non, alloshare.com est mon domaine et je l’utilise juste pour le test.

    Je Cherche à trouver une fonction qui me permet de récupérer le contenu (ou bien code source) d’une page XML distante (qui n’est pas sur mon domaine) et la mettre dans un div, zone de texte, variable,….

  13. #13
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par sara21 Voir le message
    Salut,

    Non, alloshare.com est mon domaine et je l’utilise juste pour le test.

    Je Cherche à trouver une fonction qui me permet de récupérer le contenu (ou bien code source) d’une page XML distante (qui n’est pas sur mon domaine) et la mettre dans un div, zone de texte, variable,….
    alors générez du json au lieu du xml et lisez-le avec getJSON de jQuery ou équivalent d'une autre lib JS…

    sans chipotage côté config sécurité du browser client il n'est pas possible de faire du cross domaine…

  14. #14
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Sinon, pour le cross-domain, c'est ici
    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

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Bonsoir,

    - générez du json au lieu du xml et lisez-le avec getJSON de jQuery
    j’ai cherché sur le net des exemples mais sans résultats :s
    - @Bovino :
    J’ai essayé l’exemple de google est ca marche mais je suis coincée sur la partie affichage du contenu XML de mon exemple. Sur la zone de texte de tape le nom du fichier 'data.xml'

    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
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script>
    function call_suggest(e){
             var s = document.createElement("script");
             s.setAttribute("type", "text/javascript");
             s.setAttribute("src", "'http://alloshare.com/" + e);
             document.getElementsByTagName("head")[0].appendChild(s);
    }
    </script>
    </head>
    <body>
      <br/><br/>
      <input id="f" onkeypress="call_suggest(this.value)" />
      <div id="s" />
    </body>
    </html>
    <script> var s = document.getElementById("s");</script>

  16. #16
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Salut,

    Je viens de trouver une solution à mon problème mais ça marche seulement pour Internet Explorer !
    Comment la rendre compatible avec FireFox ?
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Text</title>
    </head>
     
    <body>
    <script type="text/javascript">
    function InitHTTPReq() 
    	{ 
    	HTTPreq = false; 
    	if(window.XMLHttpRequest) 
    		{ 
    		try { HTTPreq = new XMLHttpRequest(); } 
    		catch(e) { HTTPreq = false; } 
    		} 
    	else if(window.ActiveXObject) 
    		{ 
    		try { HTTPreq = new ActiveXObject("Msxml2.XMLHTTP"); } 
    		catch(e) 
    			{ 
    			try { HTTPreq = new ActiveXObject("Microsoft.XMLHTTP"); } 
    			catch(E) { HTTPreq = false; } 
    			} 
    		} 
    	if(HTTPreq) 
    		{ 
    		/* La on defini quel est la fonction qui ecoute les changement d'état de la requete */ 
    		HTTPreq.onreadystatechange = ReadyStateChange; 
    		window.alert('objet XMLReq créé, envois de la requete.'); 
    		HTTPreq.open("GET", 'http://www.alloshare.com/data.xml', true); 
    		HTTPreq.send(null); 
    		return true; 
    		} 
    	return false; 
    	} 
     
    function ReadyStateChange() 
    	{ 
    	if (HTTPreq.readyState == 4) 
    		{ 
    		window.alert('Les infos sont chargées'); 
    		if(HTTPreq.responseXML == null) 
    			window.alert('Erreur : les infos recu ne sont pas du xml'); 
    		else 
    			window.alert('les infos recu sont du xml'); 
    		document.getElementById("txt").value=HTTPreq.responseText;
    		} 
    	} 
    </script>
    <input name="aa" type="button" value="Afficher" onclick="InitHTTPReq()"/>
    <input name="txt" type="text" value="" size="80" />
    </body>
    </html>

  17. #17
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ben ça dépend (ça dépasse forcément ) que se passe-t-il sous FF ?
    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

  18. #18
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    sous FF la zone de texte reste vide.

    même si j'essaye d'ouvrir un fichier XML sous FF la page reste blanche alors que sur IE le contenu du fichier XML est visible!! c'est un problème chez moi ou bien FF n'autorise pas l'affichage des fichiers XML?

  19. #19
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ben ça dépend (ça dépasse forcément ) que se passe-t-il sous FF ?
    Erreur*: uncaught exception: Access to restricted URI denied (NS_ERROR_DOM_BAD_URI)


    … of course…

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/05/2015, 19h54
  2. Récupérer contenu d'un XML
    Par confdam dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/05/2008, 15h36
  3. Réponses: 2
    Dernier message: 29/05/2007, 14h56
  4. Newbie en XML: récupérer le contenu avec de l'ASP
    Par yoda_style dans le forum ASP
    Réponses: 3
    Dernier message: 13/01/2006, 11h46
  5. [Balise XML] Comment récupérer le contenu entre 2 balise?
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/03/2004, 16h36

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