我应该如何使用Ajax处理验证错误
How should I handle validation error using Ajax?
我有一个html格式的表单,我将在服务器端进行验证。如果验证失败,则更新errorDiv
,否则更新resultDiv
。
我有两种选择来处理这个问题。我的朋友说验证失败应该在ajax调用的成功部分处理。虽然我认为把逻辑放在错误部分可能会更好。
他的一些担忧可能是:
- 验证错误不是网络连接之类的错误故障,应该使用一些状态代码,如400;或任何服务器侧错误,其使用状态代码500
我担心的是:
- 如果我们把逻辑放在错误部分,逻辑似乎更清晰
- 我们可以使用其他状态代码(尽管我现在不知道)而不是400500来指示验证错误
我朋友的选择1:
$.ajax({
type:'POST',
data:someFormData,
url:'/submitToServer',
success:function(data,textStatus) {
if(data.hasValidationError){
$('#errorDiv').html(data);
}else{
$('#resultDiv').html(data);
}
}
});
我的选择2:
$.ajax({
type:'POST',
data:someFormData,
url:'/submitToServer',
success:function(data,textStatus) {
$('#resultDiv').html(data);
},
error:function(XMLHttpRequest,textStatus,errorThrown){
if(textStatus==500)
$('#errorDiv').html(errorThrown);
}
});
我知道这两种方法都可以处理验证错误,但哪种方法更好?你用哪种方式?请给我一些利弊。。。
非常感谢你们!
我不得不同意你的朋友。错误部分不是为该用途而设计的。官方文件上清楚地写着:
请求失败时要调用的函数。函数接收三个参数:jqXHR(在jQuery 1.4.x中,XMLHttpRequest)对象描述发生的错误类型的字符串,以及可选的异常对象(如果发生)。秒的可能值参数(除null外)为"timeout"、"error"、"abort"answers"parserror"。当发生HTTP错误时,errorThrown将接收HTTP状态的文本部分,如"未找到"或"内部"服务器错误。"
因此,错误回调必须仅用于处理属于HTTP状态的错误,而不是您自己的验证规则。
相关文章:
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- 表单值未在单击按钮时发布,显示验证错误
- 无法使用JavaScript打印带有for循环的验证错误
- 为什么我的 JavaScript 会导致 HTML 验证错误
- 如何在单击“提交”按钮后保留经典 ASP 页(发生验证错误时)
- 如果验证错误,则停止回发
- JavaScript 中的验证错误
- 使用PayPal按钮登录 JavaScript 代码生成器验证错误
- gulp-jquery验证错误
- 如果发生验证错误,请阻止启动窗体打开
- 如何使用angular js在表单上显示服务器端验证错误消息
- Javascript订阅表单验证错误
- BrainTree Sandbox返回验证错误:-未知paymentMethodNonce
- Javascript表单验证错误
- jQuery.show()调用中弹出HTML5表单验证错误
- Jquery.在表单顶部验证错误消息
- jQuery:在验证错误之后,我的输入掩码函数不会'Don’不要在野外工作
- 如果验证错误是有效的JAVASCRIPT,则启用按钮
- 如何从HTML5输入中删除验证错误
- javascript中的单选按钮验证错误