【问题标题】:unable to compare returned String from AJAX call无法比较 AJAX 调用返回的字符串
【发布时间】:2024-05-29 11:35:02
【问题描述】:

我正在使用 AJAX 来检查用户的登录详细信息是否正确。目前,如果详细信息正确,我会输出“成功”,该“成功”会返回到 AJAX 调用并应发出警报。当我尝试比较返回的字符串时,当我尝试===== 时,它总是下降。

这里是 AJAX:

$("#loginForm").submit(function(e){
    e.preventDefault(); //STOP default action
    var postData    = $("#loginForm").serializeArray();
    var username    = $("#username").val();
    var password    = $("#password").val();

    if(username.length > 0 && password.length >){
        $.ajax(
            {
                type: "POST",
                url : "HomeController",
                data : postData,
                success: function(data) 
                {

                    if(data == "success"){
                        alert(data);
                    }


                },
                error: function(jqXHR, textStatus, errorThrown) 
                {
                    $("#loginResult").html("<p>ss"+errorThrown+textStatus+jqXHR+"</p>");
                }
            });
    }else{
        $("#loginResult").html("<p>Unable to login: ensure details are correct.</p>");
    }
});

以及返回“成功”的HomeController

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String form         = request.getParameter("form");

    // check login details
    if(form.equals("loginForm")){
        String username = request.getParameter("username").trim();
        String password = request.getParameter("password").trim();

        PrintWriter out = response.getWriter(); 

        password = loginService.hashPassword(password);
        boolean isValidUser = loginService.checkUser(username, password);

        if(isValidUser){

            // set session
            HttpSession session = request.getSession();
            session.setAttribute("loggedIn", "true");

            out.println("success");

        }else{
            out.println("Incorrect login details.");
        }
    }
}

我知道它正在返回“成功”,因为当我删除 if 语句时,它会提醒“成功”。

为什么不能成功比较两个字符串?

【问题讨论】:

  • 试试if($.trim(data) == "success")

标签: java javascript jquery ajax servlets


【解决方案1】:

在您的控制器中使用out.print("success") 而不是out.println("success"),或者从您的Javascript data 对象中删除换行符。

【讨论】: