2017-11-10 2 views
0

Also, das ist es: Auf meiner JSP-Seite möchte ich ein Dropdown aus einer Datenbank mit einer gespeicherten Prozedur füllen, die als Parameter die id des Landes in zwei Radios (dh , wenn Sie USA auswählen, werden die Staaten dieses Landes gefüllt, und wenn Sie Nicaragua wählen, umgekehrt). Wie meine Frage sagt, ist es ohne Verwendung von Servlets, das Problem ist, dass ich die value des Radios nicht ausgewählt bekommen kann (wenn ich eine Zahl statt der Variable "Land" übergebe, wird die Combo gefüllt). Ich musste ein Servlet mit JSON-Daten und Ajax-Funktionen verwenden und schließlich, wenn jemand anderes Gesicht dieses Problem ist das folgende eine einfache Lösung:Dropdown-JSP-Datenbank gespeicherte Prozedur ohne Servlet

Dies ist mein Code:

<label for="state">State</label> 
<select name="ddStates" id="ddStates"> 
    <option value="-1">Select State...</option>  
    <% 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/nextnetcustomers", "root", "root"); 
     int country = Integer.parseInt(request.getParameter("cntry")); 
     StringBuilder sb = new StringBuilder(); 
     ResultSet rs = null; 
     PreparedStatement ps = null; 
     sb.append("{call SP_CATSTATES_LIST(?)}"); 
     ps = conn.prepareCall(sb.toString()); 
     ps.setInt(1, country); 
     rs = ps.executeQuery(); 
     while (rs.next()) { 
      %> 
      <option value="<%=rs.getInt("IDCATSTATES")%>"><%=rs.getString("DESCRIPTION")%></option> 
      <% 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     out.println("Error " + ex.getMessage()); 
    } 
    %> 
</select> 
+0

Dies sind die Radios: USA < Eingabetyp = "radio" name = "cntry" value = "2" /> NICARAGUA – Chris

Antwort

0

Lösung

Die ajax-Funktionen:

$(document).ready(function() { 
      $('#USA').change(function (event) { 
       var id = $("#USA").val(); 
       $.get('PopulateCustomersTable', { 
        idcontry: id 
       }, function (response) { 
        var select = $('#ddStates'); 
        select.find('option').remove(); 
        $.each(response, function (index, value) { 
         $('<option>').val(value.IdState).text(value.Description).appendTo(select); 
        }); 
       }); 
      }); 
      $('#NIC').change(function (event) { 
       var id = $("#NIC").val(); 
       $.get('PopulateCustomersTable', { 
        idcontry: id 
       }, function (response) { 
        var select = $('#ddStates'); 
        select.find('option').remove(); 
        $.each(response, function (index, value) { 
         $('<option>').val(value.IdState).text(value.Description).appendTo(select); 
        }); 
       }); 
      }); 
     }); 

Die Radios:

<input type="radio" id="USA" name="cntry" value="1"/>USA 
<input type="radio" id="NIC" name="cntry" value="2"/>NICARAGUA 

Und die dropdown:

<select name="ddStates" id="ddStates" required> 
    <option value="">Select State...</option>              
</select>