#jquery #jquery-plugins #jquery-validate
#jquery #jquery-плагины #jquery-validate
Вопрос:
Я проверяю 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:
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 для выполнения проверки.