[英]Catch a 404 error for XHR
基本上,我必须创建一个javascript APP对象,它将为服务器排队一系列异步请求,处理对JSON的响应,并从中记录错误。
使用“try-catch”可以轻松捕获JSON处理错误,但是仍然会在浏览器的控制台中显示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年以编程方式抑制网络错误。 但是,可以使用控制台的过滤选项来抑制网络错误。
status
允许您显示发生了什么错误。
所以你可以做这样的事情
xhr = new XMLHttpRequest();
xhr.open("GET", url, true)
xhr.onerror = function(){console.log("error" + xhr.status)}
xhr.upload.onerror = function(){console.log("error" + xhr.status)}
因此,如果它是404,它将在您的警报中说“错误404”,并将对其余代码执行相同操作。
希望这有助于乔希
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.