我在html中有一个表单,我将在服务器端进行验证。如果验证失败,则会更新errorDiv
,否则resultDiv
将会更新。
我有两种方法可以解决这个问题。我的朋友说验证失败应该处理ajax调用的成功部分。虽然我认为把错误部分中的逻辑放得更好。
他的一些担忧可能是:
我担心的是:
我朋友的选项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);
}
});
我知道两种方式都可以处理验证错误,但哪种方式更好?你用哪种方式?请给我一些优点和缺点......
非常感谢你们!
答案 0 :(得分:1)
我必须同意你的朋友。错误部分不是为该用途而设计的。它明确说明的官方文件:
请求失败时要调用的函数。该功能收到 三个参数:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象,a 描述发生的错误类型的字符串和可选项 异常对象,如果发生了一个。第二个可能的值 参数(除了null)是“超时”,“错误”,“中止”和 “parsererror”。发生HTTP错误时,errorThrown会收到 HTTP状态的文本部分,例如“未找到”或“内部” 服务器错误。“
因此错误回调只能用于处理属于HTTP状态而不是您自己的验证规则的错误。