我应该如何使用jQuery验证插件检查记录是否存在


How should I check if record exists or not using jQuery Validate Plugin?

我正在使用从URL 下面找到的jQuery验证插件

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

我只是想制定一个验证规则来检查数据库中是否存在该记录。我还制作了类似blow&使用$.validator.addMethod添加了它,但它不起作用。有人能建议一下怎么做吗?

$.validator.addMethod("check_exists", function(value) {
$.ajax({
    type: "POST",
    url: "xyz.com/check_exists.php",
    data: $( "#frmEdit" ).serialize(),
        success: function(result){
                if(result=="exists")
                   return false;
                else
                   return true;
        },
});
}, 'This record is already exists');

Validation插件有一个内置的remote选项,您可以向其提供url,并从插件中向服务器发出请求。对于你正在做的事情,没有必要创建一个全新的方法

http://docs.jquery.com/Plugins/Validation/Methods/remote#options

您遇到的问题是:(1)AJAX调用是异步的,因此方法在AJAX调用完成之前返回;(2)回调处理程序中的返回语句从处理程序返回,而不是验证函数解决此问题的最简单方法是使用远程验证方法如果你想自己做,你需要让AJAX调用是同步的(async: false),并将结果捕获到函数返回的变量中。

$.validator.addMethod("check_exists", function(value) {
    var status;
    $.ajax({
        type: "POST",
        async: false,
        url: "xyz.com/check_exists.php",
        data: $( "#frmEdit" ).serialize(),
        success: function(result){
            status = result=="exists";
        },
    });
    return status;
}, 'This record is already exists');