我正在使用 eclipse 开发一个 jsp 应用程序。当前尝试检测在使用 ajax 调用提交表单时按下了哪个按钮。但是 request.getParameter(button-name) 在 servlet 的 doPost 方法中返回 null。下面是JSP,Ajax Call(jQuery)和Servlet的代码。.jsp
<body>
<form id="formCreateUser">
<div>
<table>
<tr>
<th colspan="4"><label>New User Information</label></th>
</tr>
<tr>
<td><label>Name : </label> <input type="text" name="txtName"
id="txtName" /></td>
<td><label>Surname : </label><input type="text"
id="txtSurname" name="txtSurname" /></td>
</tr>
<tr>
<td><label>User name : </label><input type="text"
name="txtUserName" /></td>
<td><label>E-mail : </label> <input type="text"
name="txtEmail" /></td>
</tr>
<tr>
<td><label>Password : </label><input type="password"
id="txtPassword" /></td>
<td><label>Re-enter password : </label><input type="password"
id="txtPassword2" /></td>
</tr>
<tr>
<td><label>Is Admin ?</label> <input type="checkbox"
value="Admin" name="chkAdmin" id="chkAdmin" /></td>
</tr>
</table>
<input type="button" value="Submit" name="btnSumbit" id="btnSubmit" />
</div>
</form>
</body>
//jquery
$(document).ready(function() {
$("#btnSubmit").click(function(e) {
$.ajax({
url : 'CreateUserServlet',
type : 'POST',
dataType : 'json',
data : $("#formCreateUser").serialize(),
success : function(data) {
//something here
}
});
return false;
});
});
奴役
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Map<String, Object> map = new HashMap<String, Object>();
if (request.getParameter("btnSubmit") != null) {
System.out.println("It works");
} else {
System.out.println("It doesn't work");
}
}
任何帮助都非常感谢问候
在 jquery 部分,你必须发送参数和它的值,如果你显示 serialize() 方法,它不会给你 btnsubmit 的参数,所以你必须像这样将它添加到方法中:替换此代码:
data : $("#formCreateUser").serialize(),
通过这个:
data : $("#formCreateUser").serialize()+"&btnSumbit="+$("#btnSubmit").val(),
我希望它能为你工作。