开发者

jQuery AJAX throws error even when it returns true

开发者 https://www.devze.com 2023-03-11 20:21 出处:网络
I am checking out AJAX inside a addMethod of jquery.validate plugin. Even w开发者_运维技巧hen the AJAX call returns true, an Error is displayed.

I am checking out AJAX inside a addMethod of jquery.validate plugin. Even w开发者_运维技巧hen the AJAX call returns true, an Error is displayed.

This is the code:

$.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");

When ajax return true, true is not returned by the function. What's wrong?


AJAX doesn't work that way. You can't return a value from a success callback -- the callback is simply what's run on the data after the AJAX request is successful.

If you must use AJAX to do this, you need to make it synchronous:

$.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");

That said, you're probably better off using inline PHP instead of an AJAX call to do the validation.

0

精彩评论

暂无评论...
验证码 换一张
取 消