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 :

XMLHttpRequest.responseXML et XMLDocument


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    49
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 49
    Par d�faut XMLHttpRequest.responseXML et XMLDocument
    Bonjour � tous,

    J'ai un probl�me, je ne comprend pas du tout comment fonctionne c'est deux objet. Dans mon petit exemple j'envoi une requ�te a mon serveur et il me renvoit les donn� dans un flux comme suis:

    Exemple avec les JSP:
    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
     
    int provinceId = new Integer(req.getParameter("state")).intValue();
    resp.setHeader("Content-type",req.getContentType());
    resp.setCharacterEncoding(req.getCharacterEncoding()); 	
    String xmlFile = "<?xml version='1.0' standalone='yes' ?>"+
                            "\n<listVille>"+
                            "\n\t<ville>\n\t\t<num>0</num>\n\t\t<nom>Aucune sélection</nom>\n\t</ville>";
    Connection connectBD = DriverManager.getConnection(this.urlBD);
    ResultSet rs = connectBD.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery("select * from Ville where province="+provinceId);
    while (rs.next()) {
      xmlFile += "\n\t<ville>\n\t\t<num>"+rs.getInt("id")+"</num>\n\t\t<nom>"+rs.getString("nom")+"</nom>\n\t</ville>";
    }
    xmlFile += "\n</listVille>";
    rs.close();
    connectBD.close();
    resp.getWriter().println(xmlFile);
    Ensuite, quand je veux lire les donn�es du c�t� client, sa marche pas. Quand je fais XMLHttpRequest.responseXML �a fonction je re�ois un objet, et j'ai plus v�rifier que c'�tais un XMLDocument en ex�cutant le meme script sur firefox en faisant un alert(XMLHttpRequest.responseXML).

    Rendu � cette �tape je n'arrive pas a acc�der � l'�l�ment principal(root node), sous internet explorer �a me dit "null" et sur firefox le alert n'apparait meme pas sur XMLHttpRequest.responseXML.getElementByTagName("listVille"). En gros voil� mon script c�t� client.

    Cr�ation de la requ�te:
    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
     
    http_request = false;
    if (window.XMLHttpRequest) http_request = new XMLHttpRequest();
    else {
      if (window.ActiveXObject) {
         try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); }
         catch (e) { 
            try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch (e1) {}
         }
      }
    }
    if (http_request) {
      http_request.onreadystatechange = update;
      http_request.open("GET", url+"?state="+state_Id, true);
      http_request.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");
      http_request.send(null);
    }

    R�ception des donn�es:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function update() {
      if (http_request.readyState == 4) {
        if (http_request.status == 200) {
           var xmlDoc = http_request.responseXML;
           alert("XMLDoc: "+xmlDoc);
           var root_node = xmlDoc.getElementsByTagName("listVille")
           alert("RootNode: "+root_node);  //Marche po... :'(
           //Je sais plus koi faire
        }
        else alert("Error no."+http_request.status+"\nAn error occur while receiving data");
      }
    }
    Avec un responseText j'ai pas de probl�me, mais responseXML chu fourrer, merci d'avance de m'aider.

  2. #2
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    var xmlDoc = http_request.responseXML.documentElement;
    et �a devrais aller mieux

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    49
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 49
    Par d�faut
    Bonjour j'ai r�gler mon probl�me je crois et je voulais vous faire part de ce que j'ai fais... Voil� en gros il faut premi�rement aller chercher l'�l�ment avec XMLHttpRequest.responseXML.documentElement. Ensuite, il faut savoir comment il y a de sous-�l�ment avec la m�thode XMLHttpRequest.responseXML.documentElement.childNodes.length, avec le nombre d'�l�ment l'on peu faire une boucle sur chaque �l�ment comme suis:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    var nbrElement = XMLHttpRequest.responseXML.documentElement.childNodes.length
    for (index=0;index<nbrElement;index++) {
      var currentNode = XMLHttpRequest.responseXML.documentElement.childNodes[index]
      //do something with the node
    }
    Pour aller chercher des attribut sur le node on peu utiliser la collection XMLHttpRequest.responseXML.documentElement.childNodes[index].attributes. Il est pr�f�rable d'utiliser un index pour aller chercher l'attribut comme suis:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    var attributValue = XMLHttpRequest.responseXML.documentElement.childNodes[index].attributes[0].value
    Pour obtenir la valeur de l'�l�ment il faut utiliser les propi�t�s XMLHttpRequest.responseXML.documentElement.childNodes[index].firstChild.data. Un des probl�mes que j'ai encore est que lorsque le formulaire est envoy�, si je fais back dans le navigateur, la valeur du 2e comboBox(celui g�n�rer avec le XMLDocument) revient � sa valeur initiale.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AJAX] xmlHTTPRequest.responseXML trop long ?
    Par firgon dans le forum AJAX
    R�ponses: 0
    Dernier message: 06/04/2013, 23h01
  2. [AJAX] XMLHttpRequest.responseXML et ie6
    Par toshTosh dans le forum AJAX
    R�ponses: 4
    Dernier message: 17/11/2010, 16h02
  3. XMLHttpRequest, responseXML et xml invalide
    Par Underground78 dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 19/05/2008, 21h03
  4. [AJAX] responseXML xmlhttprequest .
    Par Alex35 dans le forum G�n�ral JavaScript
    R�ponses: 9
    Dernier message: 24/04/2007, 17h24
  5. XmlHTTPRequest : responseText ou responseXML?
    Par bud_gw dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 12/06/2006, 14h58

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