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

  1. #21
    Membre expérimenté 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
    Points : 1 388
    Points
    1 388
    Par défaut
    Si tu veux mettre du texte avec des balises html dans ton xml, mets le tout dans un CDATA.

  2. #22
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Oups autant pour moi, le innerHTML n'y était pas lors de l'erreur c un truc que j'ai testé après.

    Quand je mets ça:

    alert(xhr.responseXML.getElementsByTagName("contenu")[0]);
    Je reçois une alerte avec 'null' et une erreur comme quoi undefined est null ou n'est pas un objet.

    Quand je mets ça:

    alert(xhr.responseXML.getElementsByTagName("contenu")[0].nodeValue);
    J'ai même plus d'alerte qui s'affiche et c'est écrit objet requis. Et je peux rajouter le documentElement ça change rien.

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Et ta ResponseText elle vaut quoi ?

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    <retour>
    <contenu>pomme</contenu>
    <keywords>fgr</keywords>
    </retour>
    Ou avec le truc <?xml..> en plus mais là j'l'ai viré.

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Ok ok... tu vas jamais t'en sortir...

    essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.responseXML.getElementsByTagName("contenu")[0].firstChild.nodeValue

  6. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Borowsky Voir le message
    Ok ok... tu vas jamais t'en sortir...

    essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.responseXML.getElementsByTagName("contenu")[0].firstChild.nodeValue
    Idem qu'avec le nodValue tout seul, erreur avec objet requis et pas d'alert du coup.

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Ok ok... je suis un peu a court de solutions...

    Une dernière mais bon c'est peut-etre une grosse connerie mais au point où on en est...

    Si tu rajoute une balise qui englobe tout (par exemple : <all>), et t'essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    items = xhr.responseXML.getElementsByTagName("retour")
    alert(items[0].getElementsByTagName("contenu")[0].firstChild.nodeValue)
    Voila, après j'abandonne...

  8. #28
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Bonne nouvelle.... Ca marche pas !!!!!!!!!!!!

    C'est chiant quand même.

    Bon sinon après avoir changé les " par des ' dans le js ça a changé il me semble (enfin cerveau embrouillé à force )

    Voici ce que j'ai:
    alert(xhr.responseXML.getElementsByTagName('contenu'));
    me renvoi [objet] donc c'est qu'il a récup quelque chose non?

    Ensuite si j'y met un [0] après il me dit: null et si j'met encore en plus un nodeValue il me dit objet requis (erreur quoi).

    Et si je met le nodeValue mais pas le [0] j'ai un undefined... Une piste peut être???

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Et avec ma solution du dessus, si tu faisais un :

    Ca donnait quoi ?

  10. #30
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    J'ai un joli 0 Donc c'est qu'il ne récupère rien?

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par spudstyle Voir le message
    J'ai un joli 0 Donc c'est qu'il ne récupère rien?
    Beh wé... je ne sais plus quoi te dire...

  12. #32
    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 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Hum... j'ai re-regardé le code de ton premier post, et juste pour me rassurer, ce bout de code, tu l'as modifié quand même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var retour = alert(xhr.responseXML.?????????????????????????????);
    ???
    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. #33
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    oui quand même fort heureusement. Bon ça m'arrive de faire des conneries de ce genre mais là j'ai enlevé.

    La j'ai donc ça dans le fichier js:

    Code javascript : 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
     
    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.getElementsByTagName('contenu').length);
     
     
                    }
            } 
     
            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);
    }

    length parce que j'ai testé si y avait quelque chose et j'peux pas mettre [0] ou .item(0) après getElementsByTagName('contenu') sinon ça marque objet requis.

    Et le php:

    Code php : 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
     
    <?PHP
    session_start();
    if (isset($_SESSION['pomme']) && isset($_SESSION['orange']))
    {
     
     
    include ('../sql.php');
    mysql_connect($host, $user, $password);
    mysql_select_db($db);
     
    $reponse = mysql_query('SELECT * FROM contenu WHERE page="'.$_GET['page'].'"') or die(mysql_error('problèmes de connexion à la base de données'));
    $donnees = mysql_fetch_array($reponse);
     
    if (isset($_GET['page']) && $_GET['page'] != NULL) 
    {
      if (!empty($donnees['contenu']) && !empty($donnees['page']))
      { 
    		header('Content-Type: text/xml')
        echo '<?xml version="1.0" encoding="UTF-8"?><contenu>'.$donnees['contenu'].'</contenu><keywords>&fgr</keywords>';
     
     
      }
      elseif (empty($donnees['contenu']) && empty($donnees['page']))
      {
        mysql_query("INSERT INTO contenu (`id` ,`page` ,`titre` ,`contenu` ,`keywords`) VALUES ('', '".$_GET['page']."','".$_GET['titre']."', 'Aucun contenu pour cette page pour le moment.', 'Ins&eacute;rer les mots cl&eacute;s ici')");
     
        $reponse2 = mysql_query('SELECT * FROM contenu WHERE page="'.$_GET['page'].'"') or die(mysql_error('problèmes de connexion à la base de données'));
        $donnees2 = mysql_fetch_array($reponse2);
     
        echo '<retour>';
        echo '<contenu>'.$donnees2['contenu'].'</contenu>';
        echo '<keywords>'.$donnees2['keywords'].'</keywords>';
        echo '</retour>';
      }
      else echo "y a une couille dans le pâté";
    }
     
    else echo 'c\'est vide ou y a pas de variable chargée';
     
    }
    else echo 't\'as cru que c\'&eacute;tait la f&ecirc;te toi?';
    ?>

  14. #34
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Ta laissé les accents dans ton texte ??


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var retour = alert(xhr.responseXML.getElementsByTagName('contenu').length);
    Ca sert pas a grand chose ca...

    un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr.responseXML.getElementsByTagName('contenu').length);
    suffit

  15. #35
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Non a pu d'accents. Le var retour c'est juste parce que je renvoyais dans un autre truc et que j'ai pas enlevé pour le test.

    J'y comprend vraiment rien! Je vois pas d'où peut venir le souci là, mais vraiment pas.

    Pensez vous que ça puisse venir du fichier index contenu le fichier l'include du fichier js dans l'entête et le include de mon 'explorer' avec les onlick qui lance la fonction makRequest???

  16. #36
    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 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Tu as essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var retour = xhr.responseXML.getElementsByTagName('contenu');
    alert(retour.length);
    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

  17. #37
    Membre expérimenté 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
    Points : 1 388
    Points
    1 388
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      if (!empty($donnees['contenu']) && !empty($donnees['page']))
      { 
    		header('Content-Type: text/xml')
        echo '<?xml version="1.0" encoding="UTF-8"?><contenu>'.$donnees['contenu'].'</contenu><keywords>&fgr</keywords>';
     
     
      }
    Ce xml ci est mal formé, donc si tu passes par la, c'est normal que ton xhr.responseXML plante.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      elseif (empty($donnees['contenu']) && empty($donnees['page']))
      {
        mysql_query("INSERT INTO contenu (`id` ,`page` ,`titre` ,`contenu` ,`keywords`) VALUES ('', '".$_GET['page']."','".$_GET['titre']."', 'Aucun contenu pour cette page pour le moment.', 'Ins&eacute;rer les mots cl&eacute;s ici')");
     
        $reponse2 = mysql_query('SELECT * FROM contenu WHERE page="'.$_GET['page'].'"') or die(mysql_error('problèmes de connexion à la base de données'));
        $donnees2 = mysql_fetch_array($reponse2);
     
        echo '<retour>';
        echo '<contenu>'.$donnees2['contenu'].'</contenu>';
        echo '<keywords>'.$donnees2['keywords'].'</keywords>';
        echo '</retour>';
      }

    Ici, tu n'as pas de header text/xml, c'est donc aussi normal que ton xhr.responseXML plante

  18. #38
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Bon y a du bon

    Voici le JS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var retour = xhr.responseXML.getElementsByTagName('keywords');
    alert(retour.length);
    et le PHP:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    header('Content-Type: text/xml');
    echo '<retour>';
    echo '<contenu>'.$donnees['contenu'].'</contenu>';
    echo '<keywords>'.$donnees['keywords'].'</keywords>';
    echo '</retour>';

    Alors avec ça ça m'affiche enfin 1!!!! Euh par contre c'est bien mais si j'fais

    retour[0].nodeValue ou encore retour.item(0).nodeValue il ne se passe rien même si j'enlève le [0]

    J'ai soit un null soit un undefined.

    Mais on progresse, merci merci. On y est presque

  19. #39
    Membre expérimenté 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
    Points : 1 388
    Points
    1 388
    Par défaut
    Pour accéder au contenu de la balise, il faut faire retour[0].firstChild.nodeValue

  20. #40
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    EXCELLENT!!!!!!!!!!! Ca fonctionne!!!

    Merci W

    Bon maintenant j'ai un autre souci, c'est qu'entre ces balises on va y trouver du code html. Donc la j'ai testé avec une phrase simple, pas de soucis, mais si j'y mets des &eacute; ça fonctionne pas ça renvoi une erreur. Après ça ce sera fini

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

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