美文网首页
对Ajax回调函数中返回错误信息的处理及常见情况整理

对Ajax回调函数中返回错误信息的处理及常见情况整理

作者: Ruby_min | 来源:发表于2017-11-09 17:44 被阅读0次

            当我们使用Ajax调用服务器端接口时,对于后台返回的信息有两个处理逻辑,一个是成功回调函数success,一个是失败回调函数error。error的函数方法是在自动判断 (xml 或 html)) 请求失败时将被调用。这个方法有三个参数:XMLHttpRequest 对象,textStatus错误信息,errorThrown(可能)捕获的错误对象。

    function (XMLHttpRequest, textStatus, errorThrown) {
      // 通常情况下textStatus和errorThown只有其中一个有值
    }
    

            一般情况下当请求失败时,最为简单的方法时直接告知用户“服务器链接失败”。

    error:funtion(data){
      alert("服务器链接失败");
    }
    

            但是如果我们想要获得较为详细的错误信息,以便根据此信息更快的定位错误方向和进行解决处理,在ajax中是可以像下面这样设置的:

    error: function(XMLHttpRequest, textStatus, errorThrown) {
           alert(XMLHttpRequest.status);//状态码
           alert(XMLHttpRequest.readyState);//状态
           alert(textStatus);//错误信息
     }
    

            下面来一 一解释:
    (1)XMLHttpRequest.status状态码有以下情况:(注:此类情况的整理,参考自http://www.cnblogs.com/mybest/archive/2011/12/13/2285730.html)

    1xx-信息提示  
    这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx响应。  
    100-继续。  
    101-切换协议。  
    2xx-成功  
    这类状态代码表明服务器成功地接受了客户端请求。  
    200-确定。客户端请求已成功。  
    201-已创建。  
    202-已接受。  
    203-非权威性信息。  
    204-无内容。  
    205-重置内容。  
    206-部分内容。  
    3xx-重定向  
    客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。  
    301-对象已永久移走,即永久重定向。  
    302-对象已临时移动。  
    304-未修改。  
    307-临时重定向。  
    4xx-客户端错误  
    发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。400-错误的请求。  
    401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:  
    401.1-登录失败。  
    401.2-服务器配置导致登录失败。  
    401.3-由于ACL对资源的限制而未获得授权。  
    401.4-筛选器授权失败。  
    401.5-ISAPI/CGI应用程序授权失败。  
    401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。  
    403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:  
    403.1-执行访问被禁止。  
    403.2-读访问被禁止。  
    403.3-写访问被禁止。  
    403.4-要求SSL。  
    403.5-要求SSL128。  
    403.6-IP地址被拒绝。  
    403.7-要求客户端证书。  
    403.8-站点访问被拒绝。  
    403.9-用户数过多。  
    403.10-配置无效。  
    403.11-密码更改。  
    403.12-拒绝访问映射表。  
    403.13-客户端证书被吊销。  
    403.14-拒绝目录列表。  
    403.15-超出客户端访问许可。  
    403.16-客户端证书不受信任或无效。  
    403.17-客户端证书已过期或尚未生效。  
    403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。  
    403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。  
    403.20-Passport登录失败。这个错误代码为IIS6.0所专用。  
    404-未找到。  
    404.0-(无)–没有找到文件或目录。  
    404.1-无法在所请求的端口上访问Web站点。  
    404.2-Web服务扩展锁定策略阻止本请求。  
    404.3-MIME映射策略阻止本请求。  
    405-用来访问本页面的HTTP谓词不被允许(方法不被允许)  
    406-客户端浏览器不接受所请求页面的MIME类型。  
    407-要求进行代理身份验证。  
    412-前提条件失败。  
    413–请求实体太大。  
    414-请求URI太长。  
    415–不支持的媒体类型。  
    416–所请求的范围无法满足。  
    417–执行失败。  
    423–锁定的错误。  
    5xx-服务器错误  
    服务器由于遇到错误而不能完成该请求。  
    500-内部服务器错误。  
    500.12-应用程序正忙于在Web服务器上重新启动。  
    500.13-Web服务器太忙。  
    500.15-不允许直接请求Global.asa。  
    500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。  
    500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。  
    500.100-内部ASP错误。  
    501-页眉值指定了未实现的配置。  
    502-Web服务器用作网关或代理服务器时收到了无效响应。  
    502.1-CGI应用程序超时。  
    502.2-CGI应用程序出错。application.  
    503-服务不可用。这个错误代码为IIS6.0所专用。  
    504-网关超时。  
    505-HTTP版本不受支持。
    

            另外也可参考JavaScript中文网XMLHttpRequest 对象 status 和statusText 属性对照表   链接地址:http://www.itxueyuan.org/view/6454.html
    (2)readyState存着XMLHttpRequest的状态,状态有0、1、2、3、4其含义分别为:

     0: 请求未初始化
     1: 服务器连接已建立
     2: 请求已接收
     3: 请求处理中
     4: 请求已完成,且响应已就绪
    

    如果用的是原生的Ajax,则其具体含义为:

    0 - (未初始化)还没有调用send()方法
    1 - (载入)已调用send()方法,正在发送请求
    2 - (载入完成)send()方法执行完成,
    3 - (交互)正在解析响应内容
    4 - (完成)响应内容解析完成,可以在客户端调用了
    

    (3)错误信息一般会返回parsererror,此时需要结合其他两个参数的返回值进行具体分析。
            以上。

    相关文章

      网友评论

          本文标题:对Ajax回调函数中返回错误信息的处理及常见情况整理

          本文链接:https://www.haomeiwen.com/subject/wyhmmxtx.html