即使返回true,jQuery AJAX也会抛出错误

时间:2011-06-09 05:57:25

标签: jquery jquery-plugins jquery-validate

我在jquery.validate插件的addMethod中检查了AJAX。即使AJAX调用返回true,也会显示错误。

这是代码:

$.validator.addMethod("checkMail", function(value, element) {
        var email_id = value;
        $.ajax({
           type: "POST",
           url: "ajax_validation.php",
           data: {'category_email_mode' : 'add_email', 'email' : email_id},
           dataType: "text",
           success: function(msg){
                if(msg == 'true')
                {
                    return true;
                }
                else(msg == 'false')
                {
                    return false;
                }
           }
        });
    }
},"Email id is already choosen");

当ajax返回true时,函数不返回true。怎么了?

1 个答案:

答案 0 :(得分:0)

AJAX不会那样工作。您无法从成功回调中返回值 - 回调就是在AJAX请求成功后对数据运行的内容。

如果必须使用AJAX执行此操作,则需要使其同步:

$.validator.addMethod("checkMail", function(value, element) {
        var email_id = value;
        var valid = false;
        $.ajax({
           async: false, // make it synchronous
           type: "POST",
           url: "ajax_validation.php",
           data: {'category_email_mode' : 'add_email', 'email' : email_id},
           dataType: "text",
           success: function(msg){
                valid = (msg=='true');
           }
        });
        return valid;
    }
},"Email id is already choosen");

那就是说,你可能最好使用内联PHP而不是AJAX调用来进行验证。