所以,就是这样:在我的JSP页面上,我想使用存储过程从数据库填充下拉列表,该存储过程期望作为参数选择在两个无线电中选择的国家的id
(即,如果您选择美国,该国的国家已经填补,如果你选择尼加拉瓜,反之亦然)。正如我的问题所说,它没有使用servlet,问题在于我无法选择收音机的value
(如果我传递一个数字而不是变量" country&#34 ;,组合已填满)。
这是我的代码:
<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 :(得分:0)
解决方案:好吧,最后我不得不使用带有JSON数据和ajax函数的servlet,如果其他人遇到这个问题,以下是一个简单的解决方案:
ajax功能:
$(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);
});
});
});
});
收音机:
<input type="radio" id="USA" name="cntry" value="1"/>USA
<input type="radio" id="NIC" name="cntry" value="2"/>NICARAGUA
选择下拉列表:
<select name="ddStates" id="ddStates" required>
<option value="">Select State...</option>
</select>