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

jQuery Discussion :

Servlet : listes déroulantes liées


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 30
    Points : 11
    Points
    11
    Par défaut Servlet : listes déroulantes liées
    Bonsoir à tous,

    Je viens vous solliciter car je bloque sur un problème depuis maintenant plusieurs jours.
    J'ai deux listes déroulantes et la deuxième(dd2) dépend de la valeur de la première(dd1).
    J'utilise une servlet à laquelle j'envoie en paramètre la valeur de la liste 1 pour pouvoir récupérer la liste 2 sous forme d'un objet JSON. Le problème est que le paramètre n'arrive jamais à la servlet.

    Code de la 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
     
    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <title>SO question 2263996</title>
            <script src="http://code.jquery.com/jquery-latest.min.js"></script>
            <script>
            $(document).ready(function() {
                $('#dd1').change(function(event) {  
                var $dd=$("select#dd1").val();
                   jQuery.get('options',{val:JSON.stringify($dd)},function(responseJson) {   
                    var $select = $('#dd2');                           
                       $select.find('option').remove();                          
                       $.each(responseJson, function(key, value) {               
                           $('<option>').val(key).text(value).appendTo($select);      
                            });
                    });
                });
            });          
            </script>
        </head>
        <body>
            <form>
                <select id="dd1" name="dd1">
                   <option value="400">400</option>
                   <option value="225">225</option>        
                </select>
                <select id="dd2" name="dd2">
                    <option>Please select parent</option>
                </select>
            </form>
        </body>
    </html>
    Code de la servlet :
    Code java : 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
     
    package testAjax;
     
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
     
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.google.gson.Gson;
     
     
    public class options extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    		List<String> options = new ArrayList<String>();
    		String val = request.getParameter("val").toString(); 
    		String json=null;
     
     
        if(val.equals("400")){
        options.add("200");
        options.add("800");
        }else{
        	options.add( "J'adore les pommes!");
        	options.add( "Je déteste les carottes!");
        }
        json = new Gson().toJson(options);
        response.setContentType("application/json");
        response.getWriter().write(json);
      this.getServletContext().getRequestDispatcher( "/WEB-INF/test.jsp" ).forward( request, response );
     
    }
    }

    Le test if(val.equals("400")) renvoie une exception parce que val est vide.
    Quelqu'un pourrait m'aider, s'il vous plait ?
    Merci d'avance.

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    S'il vous plaît je suis bloquée

  3. #3
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    Je vois pas pourquoi utiliser

    {val:JSON.stringify($dd)}

    alors que

    {'val': $dd }

    est suffisant.

    ensuite, l'utilisation du $, c'est pas très clean, normalement il sert à notifier qu'on à affaire à un objet jQuery;
    et les 'keys' en json ce mettent entre quotes, pour etre dans la norme, je suis pas certain que java les accepte sans.

    alors , le
    var $dd=$("select#dd1").val();

    devrait s'écrire : var dd=$("select#dd1").val();

    mais tu peux aussi simplifier directement en

    {'val': $("select#dd1").val() }

    et virer ta ligne d'affectation d'une variable inutile.



    après j'aime pas trop l'utilisation du Get, je préfère largement le .ajax tout simple, on à moins de surprises
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  4. #4
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    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
    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<title>SO question 2263996</title>
    </head>
    <body>
    	<form>
    		<select id="dd1" name="dd1">
    			<option value="400">400</option>
    			<option value="225">225</option>
    		</select>
    		<select id="dd2" name="dd2">
    			<option>Please select parent</option>
    		</select>
    	</form>
     
    <script charset="utf-8" type='text/javascript' src="assets/js/jquery.min.js"></script>
    <script type="text/javascript">
     
    	$(document).ready(function () {
     
    		$('#dd1').change(function(e) {
     
    			Call_Args = {
    				'truc': $(this).val()
    			};
     
    			$.ajax({
    				url      : ' adresse de ta page JAVA ',
    				type	: 'POST',
    				data     : Call_Args,
    				cache    : false,
    				dataType : 'json',
    				error    : function(request, error) { alert("Erreur : responseText: "+request.responseText); },
    				success	: function(data)
    				{
    					machin = data['XYZ'];
    				}
    			}); // $.ajax
    		}); // $('#dd1').change
    	}); // $(document).ready
    </script>
    </body>
    </html>
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

Discussions similaires

  1. [DOM] Deuxieme liste déroulante liée via ajax, encore inclure ajax?
    Par clara1 dans le forum Général JavaScript
    Réponses: 48
    Dernier message: 16/05/2008, 15h06
  2. [AJAX] Listes déroulantes liées
    Par Jiraiya42 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 14/04/2008, 09h58
  3. ajax, php et 3 listes déroulantes liées
    Par jfox dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2008, 14h13
  4. Plusieurs listes déroulantes liées (ajax)
    Par sassien dans le forum Struts 2
    Réponses: 1
    Dernier message: 18/03/2008, 13h52
  5. [AJAX] Listes déroulantes liées avec Ajax
    Par paupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 16h51

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