Ajax验证使用jquery?

时间:2011-01-14 02:41:16

标签: jquery ajax validation

我使用jquery验证插件。

在我的表格中,我需要检查昵称是否已被使用。

为此他们提供remote密钥来进行ajax调用。对我来说,ajax调用正在运行 正确并返回true或false。但即使返回的值为false,它也允许 这应该不会发生。

我的验证码如下,

$(function() {
    $("#myform").validate({
        rules: {
            fullName: {
                required: true,
                minlength: 5
            },
            nickName: {
                required: true,
                minlength: 4,
                alphaNumeric: true,
                remote: {
                    url: "NickNameChecker",
                    type: "post",
                    data: {
                        nickName: function() {
                        return $("#nickName").val();
                    }},
                    success: function(data) {
                        return data;
                    }
                }
            }
        },
        messages: {
            fullName: {
                required: "Please Enter Your Full Name.",
                minlength: "Full Name should have minimum 5 letters."
            },
            nickName: {
                required: true,
                minlength: "Nick Name should contain minimum 4 letters.",
                remote: "This nickname is already in use."
            }
        }
    });
});

任何建议都会很有意义!!!

谢谢!

解决方案:

解决方案仅在我的代码中。

我刚刚删除了成功部分并尝试了。它工作得很好!

2 个答案:

答案 0 :(得分:1)

(上述评论的扩展说明)

success选项对jQuery validate的远程验证无效。您应该只能指定一个URL来访问验证,该验证返回true或错误的值/错误消息:

  

通过调用服务器端资源   $ .ajax(XMLHttpRequest)并得到一个   键/值对,对应于   已验证元素的名称及其名称   value作为GET参数。响应   被评估为JSON,必须为true   对于有效元素,可以是任何元素   false,undefined或null表示无效   元素,使用默认消息;   或字符串

有关如何使用该选项的详细信息,请参阅documentation for remote。您的代码可能看起来像这样:

$(function() {
    $("#myform").validate({
        rules: {
            fullName: {
                required: true,
                minlength: 5
            },
            nickName: {
                required: true,
                minlength: 4,
                alphaNumeric: true,
                remote: {
                    url: "NickNameChecker",
                    type: "post",
                    data: {
                        nickName: function() {
                        return $("#nickName").val();
                    }
                }
            }
        },
        messages: {
            fullName: {
                required: "Please Enter Your Full Name.",
                minlength: "Full Name should have minimum 5 letters."
            },
            nickName: {
                required: true,
                minlength: "Nick Name should contain minimum 4 letters.",
                remote: "This nickname is already in use."
            }
        }
    });
});

答案 1 :(得分:1)

jQuery Validation团队建议另一种处理非布尔API的方法in this GitHub issue

提出的方法利用了jQuery.ajax()的dataFilter属性。

form.validate({
    rules: {
        username: {
            required: true,
            remote: {
                url: "users2.json.php",
                dataFilter: function(data) {
                    var json = JSON.parse(data);
                    if(json.status === "success") {
                        return '"true"';
                    }
                    return "\"" + json.error + "\"";
                }
            }
        }
    }
});