首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为XHR捕获404错误

为XHR捕获404错误
EN

Stack Overflow用户
提问于 2015-05-25 01:26:48
回答 1查看 39.3K关注 0票数 19

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

JSON处理错误可以通过"try-catch“轻松捕获,但是服务器错误,如404,500等仍然显示在浏览器的控制台中,而我需要将其静默地记录在"APP.history”中。

我试图通过下面的代码来实现它,但是404个错误中没有一个会触发一个错误。我做错了什么?

代码语言:javascript
复制
xhr = new XMLHttpRequest();
xhr.open("GET", url, true)
xhr.onerror = function(){console.log("error")}  
xhr.upload.onerror = function(){console.log("error")}

顺便问一下,用jQuery AJAX怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-23 23:58:29

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

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

代码语言:javascript
复制
xhr = new XMLHttpRequest();
xhr.open("GET", url, true);

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

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

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30426277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档