JQuery AJAX выдает ошибку, даже когда он возвращает true - PullRequest
0 голосов
/ 09 июня 2011

Я проверяю AJAX внутри плагина addMethod из jquery.validate.Даже когда вызов 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 голосов
/ 16 ноября 2012

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 для проверки.

...