Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该如何使用Ajax处理验证错误?_Javascript_Jquery_Ajax_Validation - Fatal编程技术网

Javascript 我应该如何使用Ajax处理验证错误?

Javascript 我应该如何使用Ajax处理验证错误?,javascript,jquery,ajax,validation,Javascript,Jquery,Ajax,Validation,我有一个html格式的表单,我将在服务器端进行验证。如果验证失败,将更新errorDiv,否则将更新resultDiv 我有两个选择来处理这个问题。我的朋友说验证失败应该在ajax调用的成功部分处理。虽然我认为把逻辑放在错误部分可能更好 他的一些担忧可能是: 验证错误不是网络连接之类的错误 故障,应使用一些状态代码,如400;或任何服务器 侧面错误,使用状态代码500 我关注的是: 如果我们把逻辑放在错误部分,逻辑似乎更清晰 我们可以使用其他状态代码(虽然我现在不知道) 而不是400500

我有一个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(在jquery1.4.x中,XMLHttpRequest)对象,一个 描述发生的错误类型的字符串,以及可选的 异常对象(如果发生)。第二个参数的可能值 参数(除null外)为“超时”、“错误”、“中止”和 “parsererror”。当HTTP错误发生时,ErrorSprown接收 HTTP状态的文本部分,例如“未找到”或“内部” 服务器错误。“


因此,错误回调只能用于处理属于HTTP状态的错误,而不是您自己的验证规则。

Hmm这个问题在这里并不是真正的主题,这是个人意见,我个人会从服务器端处理错误。这样的话,如果你重复使用代码,很明显是有错误的。