javascript - 使用 ajaxError 全局处理程序显示 HTTP 状态代码 401 详细信息

标签 javascript jquery ajax error-handling

我正在尝试添加一个全局错误处理程序,第一个测试是通过一次调用,由于没有 Access-Control-Allow-Origin header ,我故意导致错误代码 401。

我已使用 Chrome 来显示错误并验证是否引发该错误,但我不知道如何使用处理程序来显示该消息。

jqxhr.status0jqxhr.statusText“error” throwedError 是一个空字符串。

使用 Chrome,我无法在任何函数变量中找到代码和消息。有没有办法显示 Chrome Debug模式下看到的代码和消息?

$(document).ajaxError(function (event, jqxhr, settings, thrownError) {
    alert("Global Error Catch. Error of " + thrownError + " at url = " + settings.url + " event type of " + settings.type
        + " with event data of " + event.data + " and event type of " + event.type + " and event target of " + event.target
        + " and the jqXHR.status is " + jqxhr.status + " and jqXHR.statusText is " + jqxhr.statusText
        + " and the jqXHR.responseText  is " + jqxhr.responseText + " and jqXHR.responseXML  is " + jqxhr.responseXML);
});

再次查看代码,我注意到按钮单击事件使用 jQuery.when() 来查找一些输入变量值,然后最终进行触发 401 的 ajax 调用。这可能就是为什么ajaxError 未显示 thrownError 中的错误?

更新 经过进一步测试,这与 jQuery.when() 无关。但这是否与我发出跨域ajax请求有关?

Fiddler 至少可以看到 401 未经授权 响应,并且在使用 Chrome Debug模式时,我可以看到 401 未经授权Access-Control-Allow-起源错误消息。但是,如果我自己在 Web api 中执行此操作,是否只会发送回调用代码?我认为因为它在 Fiddler 和 Chrome 中都可见,所以它应该在全局 ajaxError 处理程序可见的地方。

更新2 经过更多测试后,这确实与 CORS 请求的性质有关,而不是我如何使用全局错误捕获。我可能需要就该特定主题创建一个单独的问题。

我还尝试了下面的代码,jqXHR.status 返回 0 和 textStatus = "error"errorThrown=""。我认为这与发布的问题类似here on status code 0 for a 401 in fiddler但我没有看到发布的解决方案。我将搜索类似的帖子,如果找到,我会将其作为答案。

$.ajaxSetup({
    error: function (jqXHR, textStatus, errorThrown) {
        if (jqXHR.status == 401) {
            alert("Error 401 : " + textStatus + ": " + errorThrown);
        } else {
            alert("Error: " + textStatus + ": " + errorThrown);
        }
    }
});

最佳答案

使用thrownError .ajaxError内的参数处理程序。

也可以使用statusCode $.ajaxSetup()的选项

$.ajaxSetup({
  statusCode: {
    401: function(jqxhr, textStatus, errorThrown) {
      alert(textStatus + " " + errorThrown)
    }
  }
})

关于javascript - 使用 ajaxError 全局处理程序显示 HTTP 状态代码 401 详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35753398/

相关文章:

php - Facebook Open Graph API 使用 PHP 或 Javascript 创建对象

javascript - AJAX 可以更新按钮参数吗?

jquery - 如何将 django View 与 jquery 自动保存一起使用?

jquery - 如何使用jquery在div内添加div

javascript - 使用 Ajax 进行实时搜索时出错

javascript - 使用 jquery 验证文本框

javascript - 在客户端更改上传文件的名称

php - 在 php 中发布标签值或表格单元格值或隐藏文本值

Javascript/AJAX 想要从留言簿条目中删除 html 类

javascript - jQuery.param() 的纯 Javascript 等价物