如何在ajaxError中获取HTTP-StatusCode?

时间:2017-10-25 14:50:45

标签: javascript jquery ajax

我尝试在通用$(document).ajaxError()方法中获取HTTP错误代码。我怎么读出来的?我找到了这个jQuery: How to get the HTTP status code from within the $.ajax.error method?,但我没有设法让它适应我的功能。

JQuery版本是2.1.3。

$(document).ajaxError(function (jqXHR, textStatus, errorThrown) {
    if (jqXHR.statusCode != "500") {
        $("#global-error-wrapper").show();
        $(".global-error-message-inner-text").text(trans("noconnectionerror"));
    }
});

2 个答案:

答案 0 :(得分:1)

您使用的ajaxError似乎与您发布的链接中的设置中定义的ajax事件错误处理程序略有不同。对于ajaxError(),看起来回调中的第一个参数是事件,第二个参数是您想要的jqXHR对象。此外,它应该是jqXHR.status而不是statusCode请尝试以下

$(document).ajaxError(function (event, jqXHR, settings, thrownError) {
    if (jqXHR.status != 500) {
        $("#global-error-wrapper").show();
        $(".global-error-message-inner-text").text(trans("noconnectionerror"));
    }
});

答案 1 :(得分:-1)

statusCode方法中jqXHR对象上的ajaxError对象是指您在构建ajax调用时可以创建的对象映射。如果您对所期望的状态代码有所了解,可以构建此映射并将其与ajax调用一起发送,这可以帮助您确定返回的状态代码:

var statusCodeMapping = {
    404: function() {
        $notFound = true;
    }
}

$.ajax({
  statusCode: statusCodeMapping
});

然后,您可以检查$notFound对象,看看这是否是您Ajax电话中返回的状态代码:

$(document).ajaxError(function (jqXHR, textStatus, errorThrown) {
    if ($notFound) {
        $("#global-error-wrapper").show();
        $(".global-error-message-inner-text").text(trans("noconnectionerror"));
    }
});
  

$notFound对象应该是脚本的全局