我在用户个人资料编辑表单上使用了jquery验证插件。我正在使用“远程”功能查询我的网站并检查电子邮件的唯一性,这是很有效的。我的问题是如何处理错误或失败,这似乎没有很好的记录。我想要的行为是,如果JSON查询失败或超时,请忘记验证的这一部分,允许用户提交并让服务器端验证处理它。
我可以看到有一个错误属性,看起来您可以添加一个在该场景中运行的函数,但是如果出现超时/错误/失败,我会在那里关闭验证规则?
remote: {
url: location.pathname + "/EmailUnique",
timeout: 20000,
data: {
userID: function() {
return $("#Form_EditProfileForm_userID").val();
}
}
}
答案 0 :(得分:4)
是,添加错误功能:
remote: {
//your normal $.ajax stuff here
,
error: function(jqXHR, textStatus, errorThrown) {
//deal with the error
}
}
所有这些参数都传递给正常的jQuery ajax调用,因此通过指定error
函数,您可以处理发生的任何事情。
假设您已将验证对象保存在变量v
中,您的错误函数可能就这么简单:
$('#inputWithRemote').rules('remove','remote');.
v.pendingRequest--;
老实说,v.pendingRequest
业务是处理我在Validation插件中称之为bug的东西 - 它在启动ajax请求时递增此pendingRequest
计数器,但是没有它自己的代码来处理响应中的错误。
在此处查看它:http://jsfiddle.net/ryleyb/H96TD/(请注意,我已将超时设置为2秒并使用了一些jsfiddle的特殊ajax代码来强制响应需要3秒钟。)