1

我希望能够区分 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 [服务器]/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 [服务器]/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。 e request Object {readyState: 4, responseText: undefined, status: 404, statusText: "error"} e status error e error

从那时起,500 错误以某种方式转变为 404 错误,请参阅状态 404。并且 500 错误不是由我所做的任何其他错误处理触发的(失败甚至状态错误)

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

4

0 回答 0