我的问题是基于代码的流程更基于流程,但是我正在使用分享(并且可能偶然发现一些不一致):
所以这里......
添加需要调用服务器的自定义验证(使用addMethod)(而不是内置的远程调用)时,必须设置为响应同步,因为该方法将完成在结果从服务器返回之前。这是对的吗?
我还假设这两种主要方法是通过使用async false或deferred.promise()调用$ .ajax请求。这是对的吗?
我一直在寻找许多帖子,这些帖子使用getJSON提出与自定义验证相关的问题,并且响应通常是“你没有返回任何东西”但是这不会错过这一点 - 不是响应太迟了还有吗?
感谢您的回复!
答案 0 :(得分:2)
您的假设是正确的。您不能将异步请求与自定义方法一起使用,因为jQuery validate需要知道这是异步请求。这就是为什么你应该在这种情况下使用remote
规则而不是自定义方法:
$("#myform").validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "check-email.php",
type: "post",
data: {
username: function() {
return $("#username").val();
}
}
}
}
}
});
同步AJAX请求(或SJAX)不是我建议你做的事情。