Javascript 使用jquery验证插件(servlet和jsp)检查用户名可用性

Javascript 使用jquery验证插件(servlet和jsp)检查用户名可用性,javascript,jquery,jsp,jquery-validate,Javascript,Jquery,Jsp,Jquery Validate,我使用jquery验证插件验证我的注册表。但是,当我试图检查数据库中是否有用户名时,它不起作用。谁能帮我看一下我的代码,让我知道我做错了什么?它总是显示用户已经存在,即使用户名不在数据库中 我已经试过了 及 但它仍然不起作用 我的注册jquery函数: $().ready(function() { $.validator.addMethod('uniqueUsername', function(value) { $.ajax({

我使用jquery验证插件验证我的注册表。但是,当我试图检查数据库中是否有用户名时,它不起作用。谁能帮我看一下我的代码,让我知道我做错了什么?它总是显示用户已经存在,即使用户名不在数据库中

我已经试过了

但它仍然不起作用

我的注册jquery函数:

   $().ready(function() {

        $.validator.addMethod('uniqueUsername', function(value) {
            $.ajax({
                url: 'http://localhost:8080/TBS-war/RegisterServlet.java',
                type: 'POST',
                async: false,
                contentType: 'application/json',
                dataType: 'json'

            });
        });

        //Validate signup form on keyup and submit
        $("#registrationForm").validate({
            // Set rules
            rules: {
                username: {
                    required: true,
                    uniqueUsername: true
                    /*remote: {
                        url: "http://localhost:8080/TBS-war/RegisterServlet.java",
                        type: "post",
                        contentType: "application/json",
                        data: {
                            'username': $('#username').val()
                        }
                    }*/
                },
                password: {
                    required: true
                },
                confirmPassword: {
                    required: true,
                    equalTo: "#password"
                },
                contact: {
                    required: true
                },
                email: {
                    required: true,
                    email: true
                },
                address: {
                    required: true
            }},

            // Set messages
            messages: {
                username: {
                    required: "* This field is required",
                    uniqueUsername: "* User already exist"
                    //remote: "* User already exist"
                },
                password: {
                    required: "* This field is required"
                },
                confirmPassword: {
                    required: "* This field is required",
                    equalTo: "* Please enter the same password as above"
                },
                contact: {
                    required: "* This field is required"
                },
                email: {
                    required: "* This field is required",
                    email: "* Please enter a valid email"
                },
                address: {
                    required: "* This field is required"
            }},
我的servlet文件:

@EJB
private TBSManagerBeanRemote tBSManagerBean;


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("application/json");

        PrintWriter out = response.getWriter();
        JSONObject json = new JSONObject();
        String username = request.getParameter("username");

        if (tBSManagerBean.userExist(username)) {
            out.print("{\"valid\" : false }");
            json.put("valid", false);
            System.out.println("false");
        }
        else {
            out.print("{\"valid\" : true }");
            json.put("valid", true);
            System.out.println("true");
        }
    }

使用
.addMethod()
方法时,必须
返回
true
false
,具体取决于您是否希望通过验证。您的自定义方法不返回任何内容。参见示例:但是,最合适的方法是通过
remote
方法。而且您不需要
数据
选项,因为字段的值已经发送。请参阅示例:我尝试了远程方法,但在使用远程方法时,验证不起作用,我可以知道如何比较jquery中servlet返回的值吗?我试图在网上找到它,但不太明白它是怎么做到的