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] responseText marche et responseXML ne marche pas


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut [AJAX] responseText marche et responseXML ne marche pas
    Bonjour,

    Je fis mes premiers essais en xml et ajax.
    Je charge mon fichier php qui génère du xml. Le voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <liste_prestations>
    <prestation>
    <no_prestation>1</no_prestation>
    <description>repas</description>
    <prix>100</prix>
    </prestation>
    <liste_prestations>
    Quand je récupère mon contenu, si je fais un responseText ca me renvoi bien du texte. Si je fais un responseXML ca me renvoi null. De plus, après avoir fais le responseText, si je fais un firstChild il me dit que ca n'existe pas.

    Je sais pas si j'ai vraiment été clair mais est ce que quelqu'un à une idée?

    Merci d'avance,
    Yannick

  2. #2
    Membre expérimenté
    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
    Par défaut
    Bonjour,

    Qu'est ce que tu envois comme entête vers ton navigateur ?

    Il te faut une entête du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Content-Type: text/xml; charset=iso-8859-1"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    En effet, je ne passais pas ca. J'ai essayé mais ca ne marche toujours pas.
    Voici ma fonction d'initialisation
    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
    function initReq(reqType,url,bool,respHandle){
      try{
        /* Précise la fonction qui va traiter la réponse HTTP */
        request.onreadystatechange=respHandle;
        request.open(reqType,url,bool);
        //si le paramètre reqType est POST, alors le
        //5ème argument de la function correspond aux données POSTées
        if(reqType.toLowerCase( ) == "post") {
          request.setRequestHeader("Content-Type: text/xml; charset=iso-8859-1");
          request.send(arguments[4]);
      } else {
        request.send(null);
        }
      } catch (errv) {
        alert(
        "L'application ne parvient pas à "+
        "contacter le serveur actuellement. "+
        "Veuillez essayer à nouveau dans un instant.\n"+
        "Détail de l'erreur : "+errv.message);
      }
    }
    Merci de ta réponse

  4. #4
    Membre expérimenté
    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
    Par défaut
    Ce code est faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(reqType.toLowerCase( ) == "post") {
          request.setRequestHeader("Content-Type: text/xml; charset=iso-8859-1");
    [...]
    Il te faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(reqType.toLowerCase( ) == "post") {
           request.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset=iso-8859-15" );

    setRequestHeader( ... ) te permet d'indiquer AU SERVEUR comment tu encodes
    les informations que ton navigateur envois.

    Le content-type que je te demande d'ajouter, doit être ajouter dans ton code coté serveur, si tu fais du php dans ton source php sous la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header( "Content-Type: text/xml; charset=iso-8859-15" );

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    OK en effet ca marche
    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    Citation Envoyé par ericduval
    Le content-type que je te demande d'ajouter, doit être ajouter dans ton code coté serveur, si tu fais du php dans ton source php sous la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header( "Content-Type: text/xml; charset=iso-8859-15" );
    et si c'est de l'asp ??

  7. #7
    Membre expérimenté
    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
    Par défaut
    Recherche dans ce forum, la réponse est attachée à l'un de mes posts
    mais je ne sais plus lequel.

    Cette précision a été apporté par un autre membre en complément à une réponse que j'avais faite. Je crois que c'est un truc du genre ??? add.header ???

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

Discussions similaires

  1. [AJAX] responseXML ne marche pas
    Par laomaotou dans le forum AJAX
    Réponses: 2
    Dernier message: 04/07/2011, 10h51
  2. [Ping] Dès fois marche dès fois ça marche pas
    Par ran_hery dans le forum Administration
    Réponses: 4
    Dernier message: 02/10/2006, 10h28
  3. [AJAX] responseText ou responseXML ?
    Par Greggggggg dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 29/08/2006, 09h46
  4. COM : _com_ptr_t ca marche mais je ne comprend pas pourquoi
    Par dockurt2k dans le forum Visual C++
    Réponses: 4
    Dernier message: 21/08/2006, 12h28
  5. Réponses: 2
    Dernier message: 25/03/2006, 18h54

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