Javascript 我应该如何使用Ajax处理验证错误?
我有一个html格式的表单,我将在服务器端进行验证。如果验证失败,将更新Javascript 我应该如何使用Ajax处理验证错误?,javascript,jquery,ajax,validation,Javascript,Jquery,Ajax,Validation,我有一个html格式的表单,我将在服务器端进行验证。如果验证失败,将更新errorDiv,否则将更新resultDiv 我有两个选择来处理这个问题。我的朋友说验证失败应该在ajax调用的成功部分处理。虽然我认为把逻辑放在错误部分可能更好 他的一些担忧可能是: 验证错误不是网络连接之类的错误 故障,应使用一些状态代码,如400;或任何服务器 侧面错误,使用状态代码500 我关注的是: 如果我们把逻辑放在错误部分,逻辑似乎更清晰 我们可以使用其他状态代码(虽然我现在不知道) 而不是400500
errorDiv
,否则将更新resultDiv
我有两个选择来处理这个问题。我的朋友说验证失败应该在ajax调用的成功部分处理。虽然我认为把逻辑放在错误部分可能更好
他的一些担忧可能是:
- 验证错误不是网络连接之类的错误 故障,应使用一些状态代码,如400;或任何服务器 侧面错误,使用状态代码500
- 如果我们把逻辑放在错误部分,逻辑似乎更清晰李>
- 我们可以使用其他状态代码(虽然我现在不知道) 而不是400500来指示验证错误
$.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(在jquery1.4.x中,XMLHttpRequest)对象,一个 描述发生的错误类型的字符串,以及可选的 异常对象(如果发生)。第二个参数的可能值 参数(除null外)为“超时”、“错误”、“中止”和 “parsererror”。当HTTP错误发生时,ErrorSprown接收 HTTP状态的文本部分,例如“未找到”或“内部” 服务器错误。“
因此,错误回调只能用于处理属于HTTP状态的错误,而不是您自己的验证规则。Hmm这个问题在这里并不是真正的主题,这是个人意见,我个人会从服务器端处理错误。这样的话,如果你重复使用代码,很明显是有错误的。