我有一个如下的表单,需要将操作发送到我的Java Servlet以更新数据库。
如何在不重新加载页面的情况下提交表单? 当前使用
在我的Java servlet中,
在我的JavaScript部分,我有一个名为
如何在不重新加载页面的情况下提交表单? 当前使用
action="myServlet"
会直接跳转到新页面。如果我删除到myServlet的操作,则输入内容不会添加到我的数据库中。<form name="detailsForm" method="post" action="myServlet"
onsubmit="return submitFormAjax()">
name: <input type="text" name="name" id="name"/> <br/>
<input type="submit" name="add" value="Add" />
</form>
在我的Java servlet中,
request.getParameter
将查找名称并将其添加到我的数据库中。@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
if (request.getParameter("add") != null) {
try {
Table.insert(name);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
在我的JavaScript部分,我有一个名为
submitFormAjax
的函数。function submitFormAjax()
{
var xmlhttp;
if (window.XMLHttpRequest) {
// code for modern browsers
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
alert(xmlhttp.responseText); // Here is the response
}
var id = document.getElementById("name").innerHTML;
xmlhttp.open("POST","/myServlet",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("name=" + name);
}
false
,以阻止标准表单提交的发生。 (并且你需要修复函数中的语法错误:在.getElementById("name)
中缺少"
。) - nnnnnn