jquery验证插件远程查询 - 错误/失败处理

use*_*064 5 validation jquery timeout

我在用户配置文件编辑表单上使用了jquery验证插件.我正在使用"远程"功能来查询我的网站并检查电子邮件的唯一性,这很有效.我的问题是如何处理错误或失败,这似乎没有很好的记录.我想要的行为是,如果JSON查询失败或超时,请忘记验证的这一部分,允许用户提交并让服务器端验证处理它.

我可以看到有一个错误属性,看起来你可以添加一个在该场景中运行的函数,但是如果出现超时/错误/失败,我会在那里关闭验证规则?

remote: {
                url: location.pathname + "/EmailUnique",
                timeout: 20000,
                data: {
                    userID: function() {
                        return $("#Form_EditProfileForm_userID").val();
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

Ryl*_*ley 4

是的,添加一个误差函数:

remote: {
    //your normal $.ajax stuff here
    ,
    error: function(jqXHR, textStatus, errorThrown) {
       //deal with the error
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这些参数都传递给普通的 jQuery ajax调用,因此通过指定一个error函数,您可以处理发生的任何情况。

假设您已将验证对象保存在变量中v,您的错误函数可能会如此简单:

$('#inputWithRemote').rules('remove','remote');.
v.pendingRequest--;
Run Code Online (Sandbox Code Playgroud)

老实说,v.pendingRequest业务是处理我所说的验证插件中的错误 -pendingRequest当它启动 ajax 请求时,它会增加这个计数器,但没有自己的代码来处理响应中的错误。

在这里查看它的实际情况: http: //jsfiddle.net/ryleyb/H96TD/ (请注意,我已将超时设置为 2 秒,并使用 jsfiddle 的一些特殊 ajax 代码强制响应需要 3 秒)。