当前位置: 首页 > 面试题库 >

捕获XHR的404错误

廖琪
2023-03-14
问题内容

基本上,我必须创建一个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存在相同的方法。不幸的是,我们的浏览器供应商不允许我们在2017年以编程方式抑制网络错误。



 类似资料:
  • 我得到下面的错误。我最近将更新为其最新版本,之后出现此错误。我不确定到底出了什么问题,我在谷歌上非常努力地寻找答案,因为我是一个新的角度类型的编程。 我尝试了以下步骤: 已尝试弃用返回,但运气不佳 尝试导入软件包,仍然没有成功 已尝试启动rc1,但运气不佳 你能告诉我实际的问题是什么,我应该如何解决这个问题? localhost/: 38错误:(SystemJS)XHR错误(404未找到)加载ht

  • 我使用角cli为我的Angular2应用程序。每当我尝试加载angular2/超文本传输协议在我的组件/服务没有错误显示在cli终端,但在我的浏览器的控制台它显示这- 收到http://localhost:4200/angular2/http404(未找到) 未处理的promise拒绝:错误:XHR错误(未找到404)加载http://localhost:4200/angular2/http在XM

  • 你好,作为角2学习项目的一部分,我正在创建一个测试应用程序。 我试图急切地加载一个名为的模块,但是,出现以下错误: 错误:(SystemJS)XHR错误(404未找到)加载http://localhost:3000/app/core.js错误:XHR错误(未找到404)加载http://localhost:3000/app/core.js在XMLHttpRequest。wrapFn[as _onr

  • system.config.js: 当我在“app.module.ts”的imports列表中添加时,就会出现错误。

  • 问题内容: 有没有办法捕获in 中发生的错误并可能将其标记为页面中的错误? 举个简单的例子,假设我试图在一个不存在的HTML控件上绑定一个事件,我的浏览器抛出一个错误: 现在,如果我希望相同的错误无法通过我的selenium测试,并且浏览器上显示的消息将显示为错误消息。 可以做这样的事情吗? 问题答案: 将此脚本放在页面上,然后在Selenium中检查JSError:

  • 我无法用axios捕捉错误响应。怎么做?我用的是: 我看到ajax请求的结果有400个状态代码,响应主体看起来像(Django后端)。没关系,我已经准备好在catch处理程序中处理这些错误了。 但是它们转到成功处理程序。为何如此?我在控制台中看到以下输出: 成功处理程序接收axios错误对象作为结果。为什么会这样,下一步该怎么办?此错误对象不包含任何有用信息。 UPD。实际上,错误对象包含有用的信