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] Récuperer des données XML


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Par défaut [AJAX] Récuperer des données XML
    Bonjour à tous,

    Je me bats depuis hier avec un script!

    Je m'explique, j'dois récupérer des données d'un fichier PHP avec une requête en ajax. Au début je ne récupérai qu'une seule chose, mais j'ai décidé de changer et donc je dois récupérer deux contenus. Pour cela j'ai donc décidé de passer de responseText à responseXML. Donc dans le fichier PHP je fais un mini fichier xml qui ressemble à ça:

    Le fichier PHP entre autre:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    header('Content-Type: text/xml'); 
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
     
    [...]
     
    echo "<retour>\n";
    echo "<contenu>".$donnees['contenu']."</contenu>\n";
    echo "<keywords>".$donnees['keywords']."</keywords>\n";
    echo "</retour>\n";

    Ca me semble correcte ce code. Bref quand je fais "alert(xhr.responseText);" j'ai bien un truc qui ressemble à un fichier xml. Quand je fais "alert(xhr.responseXML);" j'ai ceci: [object]. Ce qui me semble normal. Par contre je peux mettre n'importe quoi après ça fonctionne pas. J'ai testé xhr.responseXML.documentElement.getElementByTagName("contenu") et tout un tas d'autres trucs, rien ne fonctionne. J'ai retourné le web toute la journée rien trouvé. Il faut dire que j'suis nul en javascript.

    Bref je vous colle quand même le fichier 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
    34
    35
    36
    37
    38
    39
    40
    41
     
    function makeRequest(page, nom)
    {
     
    var xhr;
    if(window.XMLHttpRequest || window.ActiveXObject) {
    if(window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
    } 
    else {
    try {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    }
    else {
    alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    return;
    }
     
    xhr.onreadystatechange = function() 
    {
    if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
     
    {
     
    var retour = alert(xhr.responseXML.?????????????????????????????);
    var oEditor = FCKeditorAPI.GetInstance( 'FCKeditor1' ) ;
    oEditor.SetHTML(retour);
     
    }
    } 
     
    document.getElementById('page').value = page ;
    document.getElementById('fichier').innerText = nom ;
    document.getElementById('titre').value = nom ;
    xhr.open("GET", "request.php?page=" + page + "&titre=" + nom + "", true);
    xhr.send(null);
    }
    Voilà, j'suis complétement perdu alors que ça doit être une connerie. Avec responseText aucun soucis, avec responseXML rien ne fonctionne.
    Je précise que ce script est repris d'un exemple trouvé sur le net. Et qu'il faut que ça fonctionne

    Voilà, merci de votre aide.

  2. #2
    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
    En supposant que ton XML est bien formé,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getElementByTagName("contenu")
    c'est getElementsByTagName, avec un s et qui te renvoie une collection d'élément dans laquelle il faut cibler celui que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getElementsByTagName("contenu")[0]
    par exemple.
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Par défaut
    Citation Envoyé par Bovino Voir le message
    En supposant que ton XML est bien formé,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getElementByTagName("contenu")
    c'est getElementsByTagName, avec un s et qui te renvoie une collection d'élément dans laquelle il faut cibler celui que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getElementsByTagName("contenu")[0]
    par exemple.

    Waow, merci pour cette réponse ultra rapide. Bon J'ai malheureusement déjà testé, la si le s de getElements n'y est pas c'est parce que j'ai recopié un peu trop vite, je le savais vu que j'avais fait l'erreur au début.

    Bon j'ai refait des test avec alert():

    xhr.responseXML -> J'obtiens [objet]

    xhr.responseXML.documentElement -> J'obtiens "null" avec le message d'erreur 'undefined' à la valeur Null ou n'est pas un objet.

    xhr.responseXML.getElementsByTagName("keywords")[0] -> J'obtiens "null" aussi avec le même message d'erreur qu'au dessus.

    Donc en gros tout ce qui est après xhr.responseXML ne fonctionne pas. C'est donc qu'il y a un souci au moment de récuperer les données dans le fichier xml non?

    QUe pensez vous du fichier PHP? Il faut peut être plus de données que ça pour que le XML qui en ressorte soit valable? Je connais pas le XML du tout et le javascript je commence. Donc déjà je ne sais pas comment récuperer le valeur entre les deux balises, que mettre après getElementsByTagNam('blablabla')[0]?

    Je n'ai pas mis l'intégralité du fichier php car c'est inutile, ce sont des requêtes sql qui renvoi les fameux $donnees['xxx'] avec quelques conditions mais rien de bien méchant, au final on a un fichier XML.

    Je viens de tester en même tps que j'écris... Prob XML:

    "Un caractère incorrect a été trouvé dans un contenu de texte. Erreur de traitement de la ressource"

    d'après IE7

    et ceci:

    Erreur d'analyse XML : mal formé
    Emplacement : http://localhost/admin/request.php
    Numéro de ligne 2, Colonne 2 :

    d'après FF3.

    Une idée? Merci encore.

  4. #4
    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
    Tu peux regarder ici pour ce qui est du format XML.
    Cependant, ton document a-t-il un element root unique ?
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Tu peux regarder ici pour ce qui est du format XML.
    Cependant, ton document a-t-il un element root unique ?
    ??? C'est quoi ce truc je vois pas ce qu'est un root unique désolé

    Tu veux dire la balise <retour>???

  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 : 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
    Pour faire une analogie avec le XHTML (qui est du XML ) l'objet root est la balise <html> qui englobe toutes les autres et qui doit être unique dans la page.
    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

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

Discussions similaires

  1. récuperation des données xml dans un fichier PDF
    Par medensao dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 21/06/2012, 17h33
  2. Réponses: 3
    Dernier message: 22/10/2010, 07h15
  3. récuperer des données d'un fichier XML
    Par ryoussef19 dans le forum Visual C++
    Réponses: 64
    Dernier message: 10/07/2007, 13h39
  4. [AJAX] Recuperer des donnes xml
    Par bourvil dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/07/2006, 08h39
  5. récuperer des données d'un fichier xml
    Par Ljungberg dans le forum XML
    Réponses: 4
    Dernier message: 13/06/2006, 09h54

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