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