我希望能够区分 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 错误不是由我所做的任何其他错误处理触发的(失败甚至状态错误)
所以我无法区分这两个错误,有什么帮助吗?谢谢