我是客户端服务器应用程序的初学者,正在开发非常基础的应用程序,在服务器端使用 Java Servlet,在客户端使用 JavaScript。 我在客户端 (index.html) 使用 AJAX 的 POST 请求,如下所示:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.post("/Serve",
{
name: "Donald Duck",
city: "Duckburg"
},
function(data, status) {
alert("Data: " + data + "\nStatus: " + status);
}
);
});
});
</script>
</head>
<body>
<button>Send an HTTP POST request to a page and get the result back</button>
</body>
</html>
我使用的是 GlassFish ver 4.1,Servlet 代码 (myServe.java) 如下所示:
public class MyServe extends HttpServlet {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException{
PrintWriter out = response.getWriter();
out.print("HI");
}
}
理想情况下,响应应该转到 AJAX 函数中的数据变量,并且应该在单击按钮时显示它,但警告屏幕只会再次显示 JS 代码:
谁能告诉我哪里出错了? web.xml 文件也是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>MyServe</servlet-name>
<servlet-class>org.MyServe</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServe</servlet-name>
<url-pattern>/Serve</url-pattern>
</servlet-mapping>
</web-app>
最佳答案
ajax 请求将发送到错误的 Controller 请通过从 Serve
中删除 /
对 ajax 请求进行一些更正
$("button").click(function(){
$.post("Serve",
{
name: "Donald Duck",
city: "Duckburg"
},
function(data, status) {
alert("Data: " + data + "\nStatus: " + status);
}
);
我想这对你有帮助。
关于javascript - 客户端没有收到来自 Servlet 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559621/