ajax jquery检查错误404或错误500

时间:2016-03-28 18:41:58

标签: ajax http-status-code-404 http-status-code-500

我希望能够将404错误与500错误区分开来。 在我的应用程序中,我想检查是否后端站点 返回错误500 或者如果客户端没有互联网,则返回404错误

到目前为止,我接到了这样的电话

$.ajax({
              type: "POST",
              url: _this.$path_server,
              dataType: 'text',
              crossDomain: true,
              contentType: 'application/json; charset=utf-8',
              async: true,
              headers: { 'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8' },
              data:  JSON.stringify(arData),
              cache:false,
              timeout:3000,
              success:function(data,status,text){
                console.log("s data "+data);
                console.log("s status "+status);
                console.log(text);
              },
              error:function(request, status, error){
                console.log("e request ");
                console.log(request);
                console.log("e status "+status);
                console.log("e error "+error);
              },
              fail:function(jqXHR){
                    if(jqXHR.status==500 || jqXHR.status==0){
                        // internal server error or internet connection broke  
                        console.log("fail")
                    }
              },
              getResponseHeader:function(e){
                console.log("get getResponseHeader");
                console.log(e)
              },
               getAllResponseHeaders:function(){
                console.log("get getallResponseHeader");
              },
              statusCode:function(e) {
                    console.log("statusCode func");
                    console.log(e)
                }
            });

其中_this。$ path_server是一个包含php页面的链接 此

  <?php
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
header('Access-Control-Allow-Origin: *');
header('Content-type: application/json');
$arr = array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>

如果我断开我的互联网连接,我会从控制台获得此结果

jquery-2.0.2.min.js:6 POST [server] /call.php net :: ERR_CONNECTION_RESETx.support.cors.e.crossDomain.send @jquery-2.0.2.min.js:6x.extend .ajax @jquery-2.0.2.min.js:e request Object {readyState:4,responseText:undefined,status:404,statusText:“error”} e status error e error

哪个好,没有连接就像php页面不存在,所以错误404就是。

但如果我故意在php页面上创建错误,为了创建500错误,我有这个结果

jquery-2.0.2.min.js:6 POST [server] /call.php x.support.cors.e.crossDomain.send @jquery-2.0.2.min.js:6x.extend.ajax @ jQuery的2.0.2.min.js XMLHttpRequest无法加载[server] /call.php。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost”访问。响应的HTTP状态代码为500。 请求 对象{readyState:4,responseText:undefined,status:404,statusText:“error”} e状态错误 错误

从那时起,500错误以某种方式转换为404错误,请参见状态404.并且我所做的任何其他错误处理(失败甚至状态错误)都没有触发500错误

所以我无法区分这两个错误,有什么帮助吗? 感谢

0 个答案:

没有答案