我在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。怎么了?
答案 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调用来进行验证。