我有一个带有两个<div>'s
的jsp页面,根据选择是使用下拉特定选定值来显示的。
在打开或刷新页面时,默认显示其中一个div。我需要在第二个div上显示一些结果,这不是默认情况。任何人都可以建议。
以下是我目前的代码
表格有下拉
<form id='form' method='post' action='/log/'> <input type="hidden" name="pick" value="firstDiv">
<h4>Type of Report</h4> <select id="type" name="choices" onchange="categorySelectHandler(this)">
<option value="Top">Top Choice</option>
<option value="Info">Information Choice</option> </select>
第一个div
<div id='firstDivision' style="display: block">
<h4>By select: <span id="SelectName"> </span></h4>
//my logic
</div>
第二次DIV ----
<div id='secondDivision' style="display: none">
<form id='form2' method=post>
<input type="hidden" name="pick" value="secondDiv">
<h4>Enter value to get the information below:</h4>
<select id='identity2' name="info">
<option value="val1">choice1</option>
<option value="val2">choice2</option>
</select>
<input type="text" name="dynamicText">
<input type="submit">
</form>
//display result logic
</div>
下拉菜单选择Info
后会更改div并显示,现在当我从下拉菜单中选择内容并按下提交按钮时,我需要在该div中显示我的输出。
但是目前,当我点击提交时,它会将我重定向到早期的默认div,如果我然后选择INFO选项,则会显示该页面。
下面是我的servlet代码:
if ("secondDivision".equals(pick)) {
InformationDAOImpl ad = new InformationDAOImpl();
PResponse pr = null;
String selection = req.getParameter("info");
String inputText = req.getParameter("dynamicText");
if (selection.equals("val1")) {
String sql = "Select name, char from table2 where text='" + inputText + "'";
pr = ad.getProdData(sql);
} else if (selection.equals("val2")) {
String sql = "Select name, char from table2 where value2='" + inputText + "'";
pr = ad.getResult(sql);
}
requset.setAttribute("data", pr);
Util.forward(req, resp, this, "/log/testPage.jsp
&#34);
任何人都可以指导,或建议我如何更改此行并让我自己重定向到相同的div。
我想我需要在这里做出改变
Util.forward(req,resp,this,&#34; /log/testPage.jsp");
任何帮助都会很棒。
由于
答案 0 :(得分:0)
使用常规HTML表单提交时,您无法执行此操作。您需要使用AJAX进行提交,然后使用javascript将响应写入DIV。它与任何请求转发无关。您只需要一个返回一些HTML的servlet,而不是转发回JSP。看一下jQuery中的$ .ajax()函数。
$.ajax({
type : "POST",
url : "/log/",
data : {
//your parameters
},
success : function(data)
{
$("#firstDivision").html(data);
}
});