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

Servlets/JSP Java Discussion :

Problème interprétation ajax


Sujet :

Servlets/JSP Java

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut Problème interprétation ajax
    Bonjour à tous,

    Voila j'ai un projet à réaliser dans le cadre de ma licence Pro. Le problème c'est que ce projet ne peut être réalisé sous eclipse pour le moment (pb de configuration à la bd) donc on met notre projet dans le webapps du serveur tomcat et on lance le serveur. Cependant l'ajax écrit dans les pages n'est pas interprété.

    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
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Call</title>
     
    <script type="text/javascript">
     
            var oXHR = null;
            
            function getXHR() {
                    if (window.ActiveXObject) {
                            oXHR = new ActiveXObject("Microsoft.XMLHTTP");
                    } else if (window.XMLHttpRequest) {
                            oXHR = new XMLHttpRequest();
                    }
                    
                    return oXHR;
            }
     
            function callSync() {
                    oXHR = getXHR();
                    code = document.getElementById('pris').value;
                    sURL = "Libelle?code="+code;
                    oXHR.open("GET", sURL, false);
                    oXHR.send(null);
                    alert(oXHR.responseText);
                    
            }
            
            
            
    </script>
     
    </head>
     
    <body>
     
    	<input type="button" onClick="javascript:callSync()" id="pris"/>
    	<input type="text" id="test"/>
     
    </body>
    </html>
    Lorsque l'on éxecute ceci on reçoit une belle erreur tomcat en version html dans l'alert destiné à notre réponse.

    Si quelqu'un à une piste, je prends tout !!

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Par défaut
    Hi,

    J'avoue que sans l'erreur (message, code,...) cela va etre difficile de trouver ce qui coince,

    Mes dons de voyances m'ont laissé tomber et j'ai laisser ma Boule de Cristale a la maison,


    Vas-y donnes nous plus d'informations et je suis sûr que l'on va trouver un moyen de t'aider,


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut
    Excuse,

    Le serveur me dit que la servlet n'est pas disponible, ça c'est une première erreur (qui doit venir du web.xml, soit celui du serveur soit celui du projet j'avoue que je comprends pas tout ???) sinon j'ai un autre projet qui lui me renvoie la page entièrement en html dans l'alert au lieu de me renvoyer le resultat de la servlet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    response.setContentType("text/plain");
    PrintWriter out = response.getWriter();
    String code = request.getParameter("code");
    String s = code;
    out.println(s);
    Si tu as une idée ???

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Normalement, on utilise une méthode callback pour traiter la réponse http, quelque chose dans ce genre :
    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
     
    httpRequest = getXMLHttpRequest();
    if ( httpRequest != null )
    {
        // appel de componentsExplorer.do
        var parameters = "fonction=extractComponents&idPackage=" + id;
        var req = serverRoot + "/componentsExplorer.do";    
        httpRequest.open("POST", req, true);
        httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
        httpRequest.send(parameters);
     
        // récupération des resultats
        httpRequest.onreadystatechange = getComponentsDetails;
    }
     
    function getComponentsDetails() 
    {
        if ( parseInt(httpRequest.readyState) == 4 )
        {
            // on recupere le resultat des traitements realises
            var detailPackage = httpRequest.responseText;
     
           // on modifie l'affichage
            drawDetailPackage (detailPackage);
        }
    }
    Là, c'est un exemple de requête POST...

    A part ça, ton problème vient peut-être du fait que la servlet "Libelle" n'est pas trouvée. Il faudrait rajouter la partie "host" devant...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut
    Merci mais ça n'a pas l'air de venir de là.

    J'ai toujours un problème, la requête est bien envoyée vers la servlet (vérifiée avec firebug) mais celle ci ne me renvoie pas la réponse escomptée, au lieu de ça elle me renvoie le code de la page appelante : Index dans l'alert


    Appel javascript :

    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
    68
    69
    70
    71
    72
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page import="bean.*" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    	<title>Index</title>
    	<script src="js/fonc.js" type="text/javascript"></script>
     
    	<script type="text/javascript">
                    
                    var httpRequest = null;
                    
                    function callSync() {
                                                    
                            if(window.XMLHttpRequest) // FIREFOX
                                    httpRequest = new XMLHttpRequest();
                            else if(window.ActiveXObject) // IE
                                    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                            else
                                    return(false);
                    
                            if ( httpRequest != null ){
                            // appel de componentsExplorer.do
                            var req = "Liste_compteServlet?code=??";    
                            httpRequest.open("GET", req, true);
                            httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
                            httpRequest.send(null);
                                    // récupération des resultats
                            httpRequest.onreadystatechange = getComponentsDetails;
                            }
                    }       
     
                            
                            function getComponentsDetails() {
                            if ( parseInt(httpRequest.readyState) == 4 ) {
                                    // on recupere le resultat des traitements realises
                                    var detailPackage = httpRequest.responseText;
                                            alert("coucou");
                                    // on modifie l'affichage
                                    alert(detailPackage);
                            }
                    }
                    
            </script>
     
    	<link type="text/css" rel="stylesheet" href="style.css" />
    </head>
     
    <body>
    <%
            String jsp = ((String)application.getAttribute("jsp"));
            if(jsp==null) {
                    out.println("<body>");
            }
            else {
                    out.println("<body onload=\"javascript:submitForm('"+jsp+"');\">");
            }
    %>
    	<div id="site">
     
    		<div id="header">
    		<div id="text_header">Projet 3</div>
    		<ul id="navbar">
    			<li><a href="javascript:submitForm('accueil.html');">Accueil</a></li>
    			</ul>
    			</div>
    			<div id="left"><div id="left_haut">
    			<h3>Services</h3></div>
    <div id="leftbk">	<a href="javascript:callSync();">liste_compte</a><br />	<a href="Liste_compte_chequeServlet">liste_compte_cheque</a><br />	<a href="Liste_operationServlet">liste_operation</a><br /></div><div id="left_bas"></div><div id="left_haut"><h3>Aide</h3></div><div id="leftbk"><a href="javascript:submitForm('aide.html');">Aide telogen</a></div><div id="left_bas"></div></div><div id="right"><div id="right_haut"></div><div id="rightbk"></div><div id="right_bas"></div></div><div id="footer"><p>Telogen - Université de Nantes © 2007</p></div></div></body>
    </html>
    Servlet de réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/plain");
    		PrintWriter out = response.getWriter();
    		String code = request.getParameter("code");
    		String s = code;
    		out.println(s);
    		System.out.println("coucou");
    }
    Si c'est plus clair ?

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Essaye de mettre l'url complète de la servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    var req = "/nomApplicationWeb/Liste_compteServlet?code=" + valeur;
    
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut
    Merci mais ça ne fonctionne toujours pas, je me demande si ça viendrait pas de ma méthode doGet de la servlet ne faudrait il pas mieux utiliser la methode process (request, response);

  8. #8
    Membre expérimenté Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Par défaut
    C'est peut être rien, mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    httpRequest.send(null);
    ca craint pas un peu ca ?

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

Discussions similaires

  1. Problème interprétation expression EL
    Par devor dans le forum JSF
    Réponses: 4
    Dernier message: 12/07/2006, 12h04
  2. [AJAX] AJAX et envoie de données d'un formulaire
    Par gunderam dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2006, 18h17
  3. [AJAX] Conflit entre Ajax et Javascript
    Par cocaetjusdorange dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/05/2006, 18h16
  4. [AJAX] Résultat avec Ajax
    Par incao dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/05/2006, 22h14
  5. [AJAX] Ajax en mode synchrone sur Safari
    Par The Blec dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 17h52

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