我应该如何使用jQuery Validate Plugin检查记录是否存在?

时间:2012-03-10 13:09:18

标签: php jquery ajax validation plugins

我正在使用从以下网址

找到的jQuery Validate Plugin

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

我只是想制定验证规则来检查记录是否存在于数据库中。我还制作了一个像blow& amp;使用 $。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');

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您遇到的问题是(1)AJAX调用是异步的,因此方法在AJAX调用完成之前返回,以及(2)回调处理程序中的return语句从处理程序返回不是验证功能。 解决此问题的最简单方法是使用remote验证方法。如果您想自己动手,则需要让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');