我在使用 ajax 进行 jsp 和 servlet 之间的交互时遇到问题。如果用户已经存在(它不应该保存用户),我希望 servlet 向 jsp 发送错误,并重定向到另一个页面(如果用户不存在并且 servlet 保存它)。
$.ajax({
type : "POST",
url:"/adminUser?save=save",
dataType:'json',
data: {save: 'save', login:login, pass1:pass1, userName:userName, email:email,
bukhUsersId: bukhUsersId, otdelId: otdelId, roleId: roleId, checkActive: checkActive},
success: function () {
top.location.href = "/adminUser?action=spisok";
} ,
error : function(xhr, status, error) {
$("#errorLogin").text("Пользователь с таким логином уже существует");
}
});
这是我的 servlet 的片段:
String login = request.getParameter("login");
if (adminSecurityDAOImpl.isUserExist(login)) {
response.sendError(400, "Пользователь с таким логином уже существует");
response.flushBuffer();
return;
}
else {
adminSecurityDAOImpl.saveUser(user);
//response.getWriter().write("SUCCESS");
response.flushBuffer();
`return
}
}
我不明白如何达到成功的部分。我尝试发回 200 状态代码,什么也不返回,返回“成功”(这看起来很愚蠢,但我在 stackoverflow 上的某个地方看到了)。我怎样才能到达?
谢谢您的帮助。
你可以试试这个:
String login = request.getParameter("login");
if (adminSecurityDAOImpl.isUserExist(login)) {
response.sendError(400, "Пользователь с таким логином уже существует");
response.flushBuffer();
return;
} else {
adminSecurityDAOImpl.saveUser(user);
response.getWriter().write("SUCCESS"); // Sending a success response
response.flushBuffer();
return;
}
现在,在 jQuery AJAX 调用中,您可以修改 success 函数来处理响应:
$.ajax({
type: "POST",
url: "/adminUser?save=save",
dataType: 'json',
data: { save: 'save', login: login, pass1: pass1, userName: userName, email: email, bukhUsersId: bukhUsersId, otdelId: otdelId, roleId: roleId, checkActive: checkActive },
success: function (data) {
if (data === "SUCCESS") {
top.location.href = "/adminUser?action=spisok";
} else {
// Handle other unexpected success responses, if any
}
},
error: function (xhr, status, error) {
$("#errorLogin").text("Пользователь с таким логином уже существует");
}
});
在 jQuery AJAX
success
回调函数的上下文中,data
变量表示服务器返回的响应数据。当 AJAX 调用成功并且服务器发送响应时,data
函数中的success
参数保存该响应的内容。 看看这个。
通过此设置,当 servlet 发送“SUCCESS”作为响应时,您的 AJAX 调用的成功函数将被触发,页面将被重定向到
"/adminUser?action=spisok"
。如果 servlet 发送除“SUCCESS”以外的任何内容,您可以在 success
函数中相应地处理它。