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

Struts 1 Java Discussion :

[AJAX] Afficher informations en fonction d'un élément choisi dans une liste déroulante


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [AJAX] Afficher informations en fonction d'un élément choisi dans une liste déroulante
    Bonjour,

    Je suis débutant en développement web, je cherche à afficher des informations en fonction d'un numéro de contrat choisi dans un html:select. Je m'explique plus clairement, j'ai une liste déroulante avec tous mes numéros de contrats, je souhaite afficher à côté de cette liste le nom du client et le nom du responsable à chaque fois que je sélectionne un contrat.
    J'arrive à récupérer mon numéro de contrat dans mon action à chaque sélection, ainsi je peux récupérer le nom du client et le nom du responsable mais je n'arrive pas à envoyer ces deux informations dans ma jsp étant donné que celle ci ne se recharge pas. Comment puis-je faire?

    Ma jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    				<logic:present name="numContrat" scope="request">
    					<td>
    						<%=request.getAttribute("numContrat").toString()%>
    					</td>
    				</logic:present>
    		    	<td>
    			    	<html:select styleId="contrat" property="contrat" style="width:200px" onchange="javascript:AJAX_contrat_information();">
    			    		<html:options collection="listeContrats" property="id" labelProperty="id"/> 
    			    	</html:select>
    			    </td>
    Ma fonction Ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function AJAX_contrat_information(){
    	var xhr_object = null;
    	if(window.XMLHttpRequest){
    		xhr_object = new XMLHttpRequest();
    	} else {
    		alert("Votre navigateur ne supporte pas les objets XMLHttpRequest...");
    		return;
    	}
    	xhr_object.open("GET", "affichageInfoContratRaAction.do?numContrat="+document.getElementById("contrat").value,  true); 
    	xhr_object.send(null); 
    }
    Mon Action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                int numContrat = Integer.parseInt(request.getParameter("numContrat"));
                request.setAttribute("numContrat", "numero du contrat"+numContrat);
    Dans un premier temps j'essai juste de renvoyer le numéro de contrat.

    Merci d'avance.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Points : 246
    Points
    246
    Par défaut
    j'ai repris ta méthode AJAX_contrat_information() et j'ai rajouté un évènement, dès que le serveur aura traité ton nouveau select, la réponse sera affiché via la fonction javascript alert:
    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
     
    function AJAX_contrat_information(){
    	var xhr_object = null;
    	if(window.XMLHttpRequest){
    		xhr_object = new XMLHttpRequest();
    	} else {
    		alert("Votre navigateur ne supporte pas les objets XMLHttpRequest...");
    		return;
    	}
    xhr_object.onreadystatechange  = function()
        { 
             if(xhr_object.readyState  == 4)
             {
                  if(xhr_object.status  == 200) 
                     alert("Received:"  + xhr_object.responseText); 
                  else 
                    alert("Error code " + xhr_object.status);
             }
        }; 
     
    	xhr_object.open("GET", "affichageInfoContratRaAction.do?numContrat="+document.getElementById("contrat").value,  true); 
    	xhr_object.send(null); 
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Tout d'abord merci pour ta réponse.
    J'ai implémenté ta fonction dans mon application, xhr_object.reponseText ne renvoi rien. Ayant aucunes bases en ajax, j'ai essayé de comprendre les lignes que t'as ajouté en m'aidant du tutoriel : http://robloche.free.fr/javascript/t.../tuto_xhr.html , j'ai à peu près tout compris à par cette fameuse variable xhr_object.responseText, que devrait-elle renvoyer dans mon cas.
    Encore merci.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Points : 246
    Points
    246
    Par défaut
    La requête se contente de demander un certain fichier sans s'occuper du résultat. Les informations sont contenues dans la variable xhr_object.responseText ou xhr_object.responseXML, selon que le résultat est au format texte ou XML.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci de ton aide karement, j'ai réussi à faire ce que je voulais avec le requestText. Voici mon code pour ceux qui ont le même problème que moi

    Ma jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="resultat" align="center"/>
    Ma fonction Ajax :

    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
    function AJAX_contrat_information(){
    	var xhr_object = null;
    	if(window.XMLHttpRequest){
    		xhr_object = new XMLHttpRequest();
    	} else {
    		alert("Votre navigateur ne supporte pas les objets XMLHttpRequest...");
    		return;
    	}
    	xhr_object.onreadystatechange  = function() { 
    	         if(xhr_object.readyState  == 4){
    	              if(xhr_object.status  == 200)
    	            	  	document.getElementById('resultat').innerHTML = xhr_object.responseText;
    	              else 
    	            	  	alert("Error code " + xhr_object.status);
    	         }
    	    };
    	    xhr_object.open("GET", "affichageInfoContratRaAction.do?numContrat="+document.getElementById("contrat").value,  true); 
    		xhr_object.send(null); 
    }
    Mon action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String numContrat = request.getParameter("numContrat");
    // Write the text to response
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println(numContrat);
    out.flush();
    Par contre j'ai un autre problème toujours sur le même sujet, je voudrais récupérer n valeurs pour les mettre dans n div différents. Il y'aurait la solution de les envoyer dans le même xhr_object.requestText et ensuite de spliter la réponse pour récupérer mes n valeurs mais je trouve pas ça très propre. A mon avis, corrigez moi si je me trompe, je devrais me servir du requestXML mais je ne sais pas l'utiliser. Pourrai-je avoir un exemple de son utilisation?

    Merci d'avance pour vos réponses.

Discussions similaires

  1. Garder l'élément choisi dans une liste déroulante
    Par ash007 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/05/2015, 00h20
  2. Réponses: 6
    Dernier message: 29/07/2009, 15h31
  3. Réponses: 1
    Dernier message: 08/02/2009, 18h04
  4. [FPDF] Générer un PDF en fonction d'un élément cliqué dans une liste
    Par hartecel dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 22/07/2008, 10h44
  5. Réponses: 27
    Dernier message: 12/04/2007, 10h23

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