Bonjour,
Dans un formulaire lorsque je tape le code postal j'ai une liste déroulante avec les villes correspondantes. Dans firefox j'ai aucun probleme la liste déroulante s'affiche correctement mais sous IE il m'enlève la 1er ville systematiquement et donc si j'ai qu'une ville la liste est vide.
Mon JS :
Ma servlet :
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 function afficherVille(id){ // var xhr; var cp=document.getElementById(id).value; var xhr=null; // Objet XMLHttpRequest if (window.XMLHttpRequest){ xhr = new XMLHttpRequest(); } else if (window.ActiveXObject){ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } else{ alert("Votre navigateur n'est pas compatible ajax"); } if(xhr){ xhr.onreadystatechange = function(){ if ((xhr.readyState == 4) && (xhr.status == 200)){ document.getElementById("id_ville").innerHTML = xhr.responseText; //alert(xhr.responseText); } else if ((xhr.readyState == 4) && (xhr.status != 200)) { window.alert("Problème avec AJAX."); } } xhr.open("POST","/mutuelle/SrvCodePostaux?cp="+cp/*"http://localhost:9080/mutuelle/SrvCodePostaux?cp="+cp*/,true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send(cp); } }
Ma 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
53
54
55
56
57 public class SrvCodePostaux extends SrvServletStandard{ public void performTask( HttpServletRequest request, HttpServletResponse response) throws Exception { String cp = request.getParameter("cp"); String filePath = "/CPVilles.txt"; try{ // Création du flux bufférisé sur un FileReader, immédiatement suivi par un // try/finally, ce qui permet de ne fermer le flux QUE s'il le reader // est correctement instancié (évite les NullPointerException) BufferedReader buff = new BufferedReader(new FileReader(filePath)); try { String line; String ville = null; List listVille=new ArrayList(); // Lecture du fichier ligne par ligne. Cette boucle se termine // quand la méthode retourne la valeur null. while ((line = buff.readLine()) != null) { String cp1=(String) line.substring(44, 49); ville=line.substring(50, 83); Pattern pattern = Pattern.compile(cp); Matcher matcher = pattern.matcher(cp1); if(matcher.find()){ // si la chaine a été trouvé listVille.add(ville); } } try { //if(listVille!=null){ response.getWriter().println("<select name='Ville'"); for(int i=0;i<listVille.size();i++) { response.getWriter().println("<option>"); response.getWriter().println(listVille.get(i)); response.getWriter().println("</option>"); } response.getWriter().println("</select>"); } catch (Exception e) { e.printStackTrace(); } } finally { // dans tous les cas, on ferme nos flux buff.close(); } } catch (Exception ioe) { // erreur de fermeture des flux System.out.println("Erreur --" + ioe.toString()); } } }
Si quelqu'un à une idée sa ne serait pas de refus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <input class="saisie" name="Code postal" type="text" size="5" maxlength="5" value="" id="cp" onkeyup="afficherVille('cp');"/> <div id="id_ville"> </div>
Merci
Partager