Java Servlet - 在 ajax 中取得成功

问题描述 投票:0回答:1

我在使用 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 上的某个地方看到了)。我怎样才能到达?

谢谢您的帮助。

java ajax
1个回答
0
投票

你可以试试这个:

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
函数中相应地处理它。

© www.soinside.com 2019 - 2024. All rights reserved.