我想对servlet进行ajax调用并打印响应。我已经编写了index.html
,Assignemnt
Servlet和web.xml
,但我没有得到警报。怎么了?
index.html
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
<script>
$(document).ready(function() {
$("button").click(function() {
$.get("Assignment", function(data, status) {
alert("Data: " + data + "nStatus: " + status);
});
});
});
</script>
<title>Insert title here</title>
</head>
<body>
<form method="GET" action="Assignment" name="showall">
<table>
<tr>
<td><input type="checkbox" name="id1" /></td>
<td>Jim</td>
<td>Knopf</td>
</tr>
<tr>
<td><input type="checkbox" name="id2" /></td>
<td>Jim</td>
<td>Bean</td>
</tr>
</table>
<p>
<button>Send an HTTP GET request to a page and get the
result back</button>
</p>
</form>
</body>
</html>
servlet:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.err.println("-------++++");
String data = "Hello World!";
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(data);
//RequestDispatcher rd = request.getRequestDispatcher("/Assignment");
RequestDispatcher rd = request.getRequestDispatcher("/index.html");
rd.forward(request, response);
}
servlet映射:
<servlet>
<description>FirstAssignment</description>
<display-name>Assignment</display-name>
<servlet-name>Assignment</servlet-name>
<servlet-class>com.Assignment</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Assignment</servlet-name>
<url-pattern>/Assignment</url-pattern>
</servlet-mapping>
您根本不需要转发响应。它将覆盖text/plain
响应。删除这些行:
//RequestDispatcher rd = request.getRequestDispatcher("/Assignment");
RequestDispatcher rd = request.getRequestDispatcher("/index.html");
rd.forward(request, response);
另请参见:
- 如何使用servlet和ajax?
与混凝土问题无关的,必须用一大袋盐来服用W3Schools教程。例如,$("button")
选择器是一个非常糟糕的建议,因为在HTML文档中,这会影响,而您宁愿将AJAX函数绑定到仅通过某些ID标识的一个特定按钮的每个 <button>
元素。