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 :

interaction entre deux listes déroulantes avec les jsp et xmlhttprequest


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
    Décembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 39
    Par défaut interaction entre deux listes déroulantes avec les jsp et xmlhttprequest
    Bonjour,
    Je débute avec les jsp, cependant je voudrais afficher certains éléments d'une liste à partir de la sélection d'une autre liste.
    SVP pourriez-vous me donner des pistes pour résoudre ce problème.


    Merci pour votre aide

  2. #2
    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
    Événement onchange sur la liste source + AJAX pour chargement de la deuxième (ou alors faire un submit du formulaire pour recharger la page).

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 39
    Par défaut
    Merci pour ton aide.

    J'ai essayé de produire les scripts suivants mais je n'ai aucune action qui se produit pourtant il n'y a pas d'erreur lors de l'exécution.

    Voici les codes produits.

    fichier form.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
    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ page import="java.sql.*" %>
     
    <html>
    <head>
    <%
     
     String host = "localhost";
     String port = "3306";
     String databasename = "abonnement_tel";
     String login = "root";
     String password = "root";
     Connection connexion;
     Statement stat=null;
     String val_retour = request.getParameter("id_marque");
     ResultSet result = null;
     
     String requete = "SELECT NOM_MODELE FROM MODELE ID_MARQUE ="+val_retour;
     
     try
            {
                    //Class.forName("org.gjt.mm.mysql.Driver");
                    Class.forName("com.mysql.jdbc.Driver");
                    String url = "jdbc:mysql://"+host+":"+port+"/"+databasename;
                     connexion =  DriverManager.getConnection(url, login, password);
            System.out.println("driver charger");
                    stat = connexion.createStatement();
                    result = stat.executeQuery(requete);
                    
                    
                    while(result.next()){
                    System.out.println(result.getString(1));
                            
                    }
                    
            }
            catch (Exception e)
            {
                    e.printStackTrace();
            }
     
     
     
    %>
     
    </head>
    <body>
     
    </body>
    </html>
    Formulaire
    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
     
    <div class="Centered">
    	<form  name="form_selects" id="form_selects" action="" method="" onsubmit="return false;">
    		<fieldset>
    			<legend>Faites un choix dans la liste de gauche<br />et observez le résultat dans celle de droite</legend>
    			<div class="Left">
    			Marques&nbsp;:
    			<select name="id_marque" id="id_marque" onchange="request05(this.form)">
    				<option value="" selected="selected"></option>
    		<option value="1">NOKIA</option>
    		<option value="2">SAMSUNG</option>
    		<option value="3">HTC</option>
    		<option value="4">SONY ERICSSON</option>
    		<option value="5">LG</option>
    		<option value="5">MOTOROLA</option>
    			</select>
    			&nbsp;&nbsp;&nbsp;Modèles&nbsp;:
    			<select name="id_modele" id="id_modele" class="ButtonL">
     
    			</select>
    			</div>
    		</fieldset>
    	</form>
    </div>
    Script 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
     
     
    <script type="text/javascript">
    <!--
    var l1    = f.elements["id_marque"]; 
            var l2    = f.elements["nom_modele"]; 
            var index = l1.selectedIndex; 
            if(index < 1) 
               l2.options.length = 0; 
            else { 
               var xhr_object = null; 
                 
               if(window.XMLHttpRequest) // Firefox 
                  xhr_object = new XMLHttpRequest(); 
               else if(window.ActiveXObject) // Internet Explorer 
                  xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
               else { // XMLHttpRequest non supporté par le navigateur 
                  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
                  return; 
               } 
             
               xhr_object.open("POST", "form.jsp", true); 
                 
               xhr_object.onreadystatechange = function() { 
                  if(xhr_object.readyState == 4) 
                     eval(xhr_object.responseText); 
               } 
             
               xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
               var data = "family="+escape(l1.options[index].value)+"&form="+f.name+"&select=nom_modele"; 
               xhr_object.send(data); 
            } 
     
     
    //-->
    </script>
    Merci pour votre aide.

  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
    Le code javascript que tu montres est celui de la fonction request05(this.form) ?

    Si c'est le cas, tu fais référence à "nom_modele" alors que le champ select porte le nom "id_modele".
    En plus, tu ne fais rien du résultat, eval(xhr_object.responseText).

    Il faudrait générer un contenu qui ajoute les options au select, pour ça, tu as la méthode javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    form.id_modele.options[form.id_modele.options.length] = new Option("value", "texte");
    Une servlet aurait été plus adaptée à ce traitement, même si une jsp peut faire l'affaire (d'ailleurs, c'est une servlet également)

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 39
    Par défaut
    Je débute en javascript et en java/servlet/jsp, donc Je ne comprends pas très bien ce qu'il faut faire.
    En ce qui concerne la deuxième méthode de traitement que tu m'as proposée, je peux la mettre en œuvre mais j'aurai bien aimé utiliser l'objet xmlhttprequest.
    voici le code javascript que je viens de faire mais je ne vois pas comment utilisé la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form.id_modele.options[form.id_modele.options.length] = new Option("value", "texte");
    code 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
     
    <script type="text/javascript">
    <!--
     
    var requete = null; /* On crée une variable globale qui contiendra l'objet XHR */
     
    /*
     Fonction qui crée un objet XHR.
     Cette fonction initialisera la valeur dans la variable globale "requete"
    */
     
    function creerRequete() {
        try {
            requete = new XMLHttpRequest(); /* On essaye de créer un objet XmlHTTPRequest */
        } catch (microsoft) {
            /* Microsoft utilise une autre technique, on tente de créer un objet ActiveX */
            try {
                requete = new ActiveXObject('Msxml2.XMLHTTP');
            } catch(autremicrosoft) {
                /* On en teste une autre méthode si la première n'a pas marchée */
                try {
                    requete = new ActiveXObject('Microsoft.XMLHTTP');
                } catch(echec) {
                    /* Si aucune méthode ne fonctionne, il ne reste plus qu'à mettre à jour le navigateur ! */
                    requete = null;
                }
            }
        }
        if(requete == null) {
            alert('Votre navigateur ne semble pas supporter les object XMLHttpRequest.');
        }
    }
     
    function load_data()
    {
            
            var l1    = f.elements["id_marque"]; 
            var l2    = f.elements["id_modele"]; 
            var index = l1.selectedIndex; 
            if(index < 1) 
               l2.options.length = 0; 
            else {
                    creerRequete();
     
                    requete.open("POST", "form.jsp", true); 
                 
                       requete.onreadystatechange = function() { 
                          if(requete.readyState == 4) 
                             eval(requete.responseText); 
                       } 
                     
                       var data = "id_marque="+escape(l1.options[index].value)+"&form="+f.name+"&select=id_modele";
                       form.id_modele.options[form.id_modele.options.length] = new Option("value", "texte");
                        
                       requete.send(data);   
            }               
    }
    //-->
    </script>
    Merci pour ton aide

  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
    Ci-joint 2 fichiers html pour te montrer ce à quoi tu dois arriver...

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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/01/2013, 12h42
  2. Liaison entre deux listes déroulantes
    Par klimero dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 07/10/2008, 18h00
  3. Réponses: 0
    Dernier message: 13/09/2007, 08h33
  4. requete parametrée entre deux listes déroulantes
    Par olodin dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/06/2007, 09h12
  5. Liste déroulante avec les valeur de 2 tables
    Par christ-94 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h44

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