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

AJAX Discussion :

Utilisation de responseXML dans l'objet XMLHttpRequest


Sujet :

AJAX

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 145
    Par défaut Utilisation de responseXML dans l'objet XMLHttpRequest
    Bonjour,

    J'essaie d'intégrer l'AJAX à ma page jsp(html), et j'ai un petit problème. cette ligne de code n'est pas interprétée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var messageTag = requete.responseXML.getElementsByTagName("message")[0];
    Je vous passe le code complet de ma page html assez simple
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Test XHR</title>
    <script type="text/javascript">
     
    	var requete;
    	alert("start");
     
    	function valider(){
    		alert("good");
    		var donnees = document.getElementById("donnees");
    		var url = "valider?valeur="+escape(donnees.value);
    		if (window.XMLHttpRequest){
    			requete = new XMLHttpRequest();
    		}else if (window.ActiveXObject){
    			requete = new ActiveObject("Microsoft.XMLHTTP");
    		}
    		requete.open("GET", url, true);
    		requete.onreadystatechange = majIHM;
    		requete.send(null);
    	}
     
    	function majIHM(){
    		alert('go')
    		var message = "";
     
    		if (requete.readyState == 4){
    			if(requete.status == 200){
    				alert('gogo')
    				// issue here
    				var messageTag = requete.responseXML.getElementsByTagName("message")[0];
    				alert('gigigi')
    				message = messageTag.childNodes[0].nodeValue;
    				mdiv = document.getElementById("validationMessage");
    				alert('gogogo')
    				if (message == "invalide"){
    					alert('goga')
    					mdiv.innerHTML = "Invalide";
    				}else{
    					alert('gogi')
    					mdiv.innerHTML = "Valide";
    				}
    			}else{
    				alert("une erreur s'est produite");
    			}
    		}
    	}
     
    </script>
     
    </head>
    <body>
     
    	<table>
    		<tr>
    			<td>valeur:</td>
    			<td>Nom <input type="text" id="donnees" name="donnees" size="30" onkeyup="valider();"></td>
    			<td><div id="validationMessage"></div></td>
    		</tr>
    	</table>
     
    </body>
    </html>
    Je mets ici la méthode appelée par le service ajax dans mon Controller (Je développe mon appli à l'aide de Spring MVC)
    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
     @RequestMapping( value = "/valider" )
        public void test( HttpServletRequest request, HttpServletResponse response ) {
     
            String resultat = "invalide";
            String valeur = request.getParameter( "valeur" );
     
            response.setContentType( "test/xml" );
            response.setHeader( "Cache-Control", "no-cache" );
     
            if ( valeur != null && valeur.startsWith( "X" ) ) {
                resultat = "valide";
            }
     
            try {
                response.getWriter().write( "<message>" + resultat + "<message>" );
            } catch ( IOException e ) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     
        }
    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 554
    Par défaut
    essayez en envoyant les données en JSON, ce format est plus adapté à être utilisé avec JavaScript que XML

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 145
    Par défaut
    ça a résolu le problème. merci

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 576
    Par défaut
    Hello,

    Et pour information, le content-type de XML c'est text/xml et non pas test/xml
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Pour information, c'était ton xml qui est mal formé. Tu as mal fermé la balise message.
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    response.getWriter().write( "<message>" + resultat + "</message>" );
    Et puis, s'il ne s'agit que d'envoyer une seule valeur, tu peux simplement envoyer le text et utiliser responseText.

    A+.

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

Discussions similaires

  1. [AC-2000] Probleme lors de l'utilisation d'un call
    Par zandeparis dans le forum VBA Access
    Réponses: 5
    Dernier message: 04/11/2009, 21h59
  2. Réponses: 1
    Dernier message: 17/06/2009, 15h42
  3. Réponses: 9
    Dernier message: 18/08/2008, 17h19
  4. Réponses: 5
    Dernier message: 11/04/2008, 12h53
  5. Probleme lors de l'utilisation statspack
    Par magboom dans le forum Administration
    Réponses: 6
    Dernier message: 14/08/2007, 17h14

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