使用 ajaxError 全局处理程序显示 HTTP 状态代码 401 详细信息
Using ajaxError global handler to display HTTP status code 401 details
我正在尝试添加一个全局错误处理程序,第一次测试是在一个调用中,由于没有Access-Control-Allow-Origin
标头,我故意导致错误代码 401。
我已经使用 Chrome 显示错误并验证它是否已抛出,但我无法弄清楚如何使用处理程序来显示该消息。
jqxhr.status
0
jqxhr.statusText
"error"
,thrownError
为空字符串。
使用 Chrome,我无法在任何函数变量中找到代码和消息。有没有办法显示Chrome调试模式下看到的代码和消息?
$(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 unauthorized
响应,并且在使用Chrome调试模式时,我可以看到401 unauthorized
和Access-Control-Allow-Origin
错误消息。但是,如果我在 web api 中自己做,这只会发送回调用代码吗?我认为由于它在 Fiddler 和 Chrome 中都是可见的,因此它应该在全局ajaxError
处理程序可见的地方。
更新2经过更多测试,这确实与 CORS 请求的性质有关,而不是我如何使用全局错误捕获。我可能需要就该特定主题创建一个单独的问题。
我也尝试了下面的代码,jqXHR.status
返回 0 和 textStatus = "error"
和 errorThrown=""
.我认为这类似于这里发布的问题,用于小提琴手中的 0 状态代码 401,但我没有看到发布的解决方案。我将搜索与此类似的帖子,如果我找到一个,我会将其作为答案。
$.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)
}
}
})
- AngularJS$http重定向状态代码
- AJAX错误状态代码500内部服务器错误
- 如何将JavaScript自动POST的状态代码获取到另一个域
- Http状态代码工厂AngularJs
- 成功ajax:如果是200状态代码,则运行函数else另一个函数
- 运行函数ifsuccess($.ajax)有200个状态代码
- XMLHttpRequest 对象状态代码为 0
- URL中包含特殊字符的HTTP状态代码
- 如何使用scalajs-angular获取请求的http状态代码
- Internet Explorer:可以't访问IFrame内容,除非状态代码为200
- 如何侦听跨域映像请求上的任何301/302重定向状态代码
- 如果 angularjs 中的状态代码为 403,请注销
- 如何让反应路由器响应 404 状态代码
- HTTP 状态代码 - Backbone.js 和 Jquery
- 如何使用 iframe.src 下载文件时获取返回状态代码
- 预检响应具有无效的 HTTP 状态代码 405 - AngularJS + Spring MVC
- 使用 ajaxError 全局处理程序显示 HTTP 状态代码 401 详细信息
- http 状态代码 NodeJS/ExpressJS 错误
- 执行服务呼叫时的状态代码 12004
- AngularJS:使用 ngResource 执行 GET 请求时的状态代码 0