javascript - 捕获 XHR 的 404 错误

标签 javascript jquery ajax

基本上,我必须创建一个 javascript APP 对象,它将对服务器的一系列异步请求进行排队,处理对 JSON 的响应,并记录其中的错误。

JSON 处理错误很容易被“try-catch”捕获,但服务器错误如 404、500 等仍然显示在浏览器的控制台中,而我需要将其静默记录在“APP.history”中。

我尝试通过下面的代码实现它,但没有一个 404 错误引发一个错误。我做错了什么?

xhr = new XMLHttpRequest();
xhr.open("GET", url, true)
xhr.onerror = function(){console.log("error")}  
xhr.upload.onerror = function(){console.log("error")}

顺便问一下,如何使用 jQuery AJAX 完成?

最佳答案

404 状态不会触发 xhr.onerror() 因为从技术上讲这不是错误; 404 本身就是一个有效的响应。

一种解决方案是使用 loadend() 处理程序,它无论如何都会触发。然后检查 404 的状态,或您感兴趣的任何状态。

xhr = new XMLHttpRequest();
xhr.open("GET", url, true);

xhr.onloadend = function() {
    if(xhr.status == 404) 
        throw new Error(url + ' replied 404');
}

XMLHttpRequestUpload 存在相同的方法。 不幸的是,我们的浏览器 vendor 不允许我们在 2017 年以编程方式抑制网络错误。However, networks errors can be suppressed using the console's filtering options.

关于javascript - 捕获 XHR 的 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30426277/

相关文章:

javascript - JavaScript 中用于 token 替换的正则表达式

javascript - 如何使用 PDF.js 加载 Web 应用程序中包含的文件(不是来自 "file:"URL?

JavaScript:未更新变量的动态值。为什么会这样?

javascript - facebook 未在 iframe 内加载

jquery - 添加公共(public)方法的 jQuery 插件模式的缺点

javascript - 单个 JS 文件中的两个 AJAX 表单提交,只有一个有效

javascript - 如何在html静态页面上创建模态表单以将用户存储在rails中

javascript - 使用 vue-multiselect 添加更多动态下拉菜单

javascript - 无法在ajax的帮助下使用选择选项更新数量

jquery - 在 Rails 中加载表单后调用 JavaScript 函数