javascript - ajax - jsp总是出现错误

标签 javascript jquery ajax jsp servlets

这是我对用于登录表单的 servlet 的 AJAX 调用,它正确执行 servlet,并且 servlet JsonObject 在每种情况下(用户存在或不存在)正确保存信息,但 AJAX 总是转到错误函数而不是成功。

我找不到问题,错误函数中的警报显示“未定义”。当用户和密码正确时,它会正确创建 session ,但 ajax 不会重定向,因为它始终是“错误”。

希望你能帮助我。

JS-AJAX

 function validarUsuario() {
    var usuarioR = $("#cmpUsuario").val();
    var passwordR = $("#cmpPassword").val();

    if (usuarioR.length < 1) {
            $("#divTextoEstado").html("<p>Se requiere un usuario.</p>");
            return false;
    } else if (passwordR.length < 1) {
            $("#divTextoEstado").html("<p>Se requiere una contrasenha.</p>");
            return false;
    } else {
            $.ajax({
                    type: "POST",
                    url: "IniciarSesion",
                    data: "usuario=" + usuarioR + "&password=" + passwordR,
                    dataType: "json",
                    success: function (data) {
                            //alert(data.message);
                            if (data.message.equals("Success")) {
                                    window.location.href("/principal.jsp");
                            } else {
                                    $("#divTextoEstado").html("<p>User or password are incorrect.</p>");
                                    return false;
                            }
                    },
                    error: function (data) {
                            alert(data.message);
                            console.log(data);
                            return false;
                    }
            });
    }
}

服务器

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");

            Usuario usuario = new Usuario();
            PrintWriter out = response.getWriter();

            String usuarioR = request.getParameter("usuario");
            String passwordR = request.getParameter("password");
            boolean correcto = usuario.validarUsuario(usuarioR, passwordR);

            if (correcto) {
                    usuario = new Usuario(usuarioR, passwordR);
                    HttpSession sesion = request.getSession(true);
                    sesion.setAttribute("nombre", usuario.getNombre());
                    sesion.setAttribute("apellido", usuario.getApellido());
                    sesion.setAttribute("usuario", usuario.getUsuario());

                    JsonObject myObj = new JsonObject();
                    myObj.addProperty("message", "Success");
                    System.out.println(myObj.get("message")); // To print value
                    out.println(myObj.toString());

            } else {
                    JsonObject myObj = new JsonObject();
                    myObj.addProperty("message", "User or password are incorrect.");
                    System.out.println(myObj.get("message")); // To print value
                    out.println(myObj.toString());

            }
            out.close();
    }

最佳答案

请更改:

response.setContentType("text/html;charset=UTF-8");

response.setContentType("application/json");

正如您期望 ajax 函数中的 json 结果一样。

关于javascript - ajax - jsp总是出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43906962/

相关文章:

javascript - 之后如何获取查询字符串值?登录 JavaScript

jquery - CoffeeScript:将 jQuery Ajax 调用的数据存储在变量中

javascript - highcharts 散点图中的单个点颜色

javascript - 当我按下回车问题时提交,html 表单

javascript - 如果我选中所有复选框,则应自动选中全选复选框,在 AngularJS 中反之亦然

javascript - 在继续执行另一个代码之前等待函数执行

javascript - 如何使下拉列表选择更新网页上的图像?

javascript - 在上传到 s3 之前将 pdf 转换为图像

javascript - 仅在填充新行时阻止表单提交

javascript - 视差滚动断断续续