java - 我正在使用 jsp ajax 向 servlet 发送表单数据,但是 ajax 响应在纳秒内消失
问题描述
我通过 Servlet 上的 AJAX 使用 Jsp 发送表单数据。
reg.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form>
Enter name:<input type="text" id="name" /> <br />
<button onclick="callJqueryAjax()">Save</button>
</form>
<span id="result"></span>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
function callJqueryAjax() {
location.reload(false);
var name = $('#name').val();
console.log(name);
$.ajax({
url : 'Save',
method : 'POST',
data : {
name : name,
},
success : function(resultText) {
$("#result").html(resultText);
}
});
}
</script>
</body>
</html>
SaveMe.java
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Save")
public class SaveMe extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection makeCon;
private Statement stmt;
public void init(ServletConfig config) throws ServletException {
JdbcCon jdbcCon = new JdbcCon();
makeCon = jdbcCon.makeCon();
try {
stmt = makeCon.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse res) throws ServletException, IOException {
String name = request.getParameter("name");
res.setContentType("text/html");
PrintWriter out = res.getWriter();
String sql = "insert into users (name) Values('" + name + "')";
System.out.println(sql);
try {
int result = stmt.executeUpdate(sql);
if (result > 0) {
out.print("Inserted");
} else
out.print("Not Inserted");
} catch (SQLException e) {
}
}
}
我在 ajax 中收到输出,但问题是 JSP 自己重新加载并删除响应以及从文本框中删除我的响应自行消失的数据。
请为我提供解决方案以及编写 ajax 调用的更好方法
解决方案
首先我不明白你为什么使用“location.reload(false);” 在提交 ajax 请求之前在您的 JSP 页面中。你可以删除它。此外,使用 ajax 请求时的一个好习惯是指定“dataType”,在您的情况下为“html”。这是一个例子:
$.ajax( {
type : 'POST',
url : 'SaveMe',
success : function(result) {
$("#result").html(result);
},
dataType : "html"
});
推荐阅读
- javascript - 带数组的 HTML 5 本地存储
- java - 在 Intent 中传递了 ArrayList 但没有进行任何更改?
- hibernate - 从 table1 table1_table2 和 table2 休眠多对多删除数据
- chart.js - Chart.js - 删除标签
- makefile - makefile 中的 $/makefile.inc.system 是什么?
- ruby-on-rails - 无法运行 Rails 服务器。Sass / Ruby 版本错误
- text - 帖子上文本的 CSS 背景颜色 (Tumblr)
- python - 已安装 Python 模块上的 ImportError
- sql - SQL 如何选择结果以显示 23:00 而不是 23
- node.js - $lookup 聚合中的 $project