我正在研究货物跟踪系统。在这种情况下,我需要3个下拉列表,第一个是从数据库中检索城市名称的城市。直到这里没有问题。但是第二个下拉镇需要填写在第一个下拉列表中选择的城市名称。同样地,区域下拉列表将链接到城镇下拉列表。我为此编写了一些代码,但是此代码重新加载表单,因此所有下拉列表都变为默认值这是我的代码:
<%
DBOperations db = new DBOperations();
Connection conn = null;
conn = db.connect();
ResultSet rs = db
.runQuery(conn, "Select distinct city from Adress");
%>
<form method="post" action="addBranch.jsp">
<table border="1" width="30%" cellpadding="3">
<thead>
<tr>
<th colspan="2">Enter the Parameters</th>
</tr>
</thead>
<tbody>
<tr>
<td>CITY :</td>
<td><select name="city" onChange="a();">
<%
while (rs.next()) {
%>
<option value="<%=rs.getString(1)%>"><%=rs.getString(1)%></option>
<%
}
%>
</select></td>
</tr>
<%
if (request.getParameter("city") != null)
rs = db.runQuery(conn,
"Select distinct town from adress where city='"
+ request.getParameter("city") + "'");
%>
<tr>
<td>TOWN</td>
<td><select name="town" onChange="this.form.submit();">
<%
while (rs.next()) {
%>
<option value="<%=rs.getString(1)%>"><%=rs.getString(1)%></option>
<%
}
%>
</select>
<tr>
在这种情况下,我该怎么办?我该如何实现?
答案 0 :(得分:0)
从您的代码中不清楚方法a();在JavaScript中正在做。另外在你的TOWN列表下拉列表中,当onChange发生时,你只是提交返回addBranch.jsp页面的表单,我想再次重新加载整个页面。
我建议您查看实现此方法的其他方法。主要原因是: 1)您在HTML中混合了太多的Script代码。 2)如果对城镇等进行类似的查找,您还可以优化服务器端实施。
你应该看看在这里使用Ajax并实现SErver端API调用来检索城镇列表,基于城镇的区域列表等。当你的代码中发生onChange时,应该进行Ajax调用。
答案 1 :(得分:0)
编写scriptlet并不是一个好主意jsp仅适用于表示逻辑。 这是你应该做的, 1)用jquery / javascript监听下拉变化。 2)在更改下拉列表时,对servlet进行ajax调用并获取下一个下拉列表的数据并填充它。
参考这些帖子,尝试一下,如果特别是你遇到任何问题,我会回来。