jQuery AJAX即使返回true也会抛出错误
问题描述:
我在jquery.validate插件的addMethod中检出AJAX。即使AJAX调用返回true,也会显示错误。jQuery 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,真不是由函数返回。怎么了?
答
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");
这就是说,你可能会更好过使用,而不是一个AJAX调用PHP内嵌做验证。