Javascript 如何捕获网络::错误连接被拒绝
是否有方法捕获加载资源失败的Javascript 如何捕获网络::错误连接被拒绝,javascript,jquery,ajax,exception,Javascript,Jquery,Ajax,Exception,是否有方法捕获加载资源失败的:net::ERR\u CONNECTION\u densed,我已尝试: try { $.post('',{},function(res) { }).fail(function (xhr, textStatus, errorThrown) { xhr.textStatus = textStatus; xhr.errorThrown = errorThrown; console.log('fail',xhr); // how
:net::ERR\u CONNECTION\u densed
,我已尝试:
try {
$.post('',{},function(res) {
}).fail(function (xhr, textStatus, errorThrown) {
xhr.textStatus = textStatus;
xhr.errorThrown = errorThrown;
console.log('fail',xhr);
// how to get the 'ERR_CONNECTION_REFUSED' or anything else as string?
});
} catch(e) {
console.log('catch',e);
}
fail函数可以捕获,但我没有得到有关错误的信息,或者是:
- 错误\u名称\u未\u解析
- 错误连接被拒绝
- 错误\u被\u客户端阻止\u
- 错误\u隧道\u连接\u失败(使用代理时)
或者别的什么。。问题是,如何获得这种错误?我甚至尝试使用javascript
XMLHttpRequest()
var xhttp=new-XMLHttpRequest();
试一试{
xhttp.onreadystatechange=函数(){
console.log(xhttp);
if(xhttp.readyState==4&&xhttp.status==0){
警报(“发生未知错误。未收到服务器响应”);
}
};
xhttp.open(“POST”http://localhost:8080/data“,对);
xhttp.send();
}捕获(e){
console.log('catch',e);
}
获取错误的另一种方法是onerror事件处理程序,以后可能更容易理解。据我所见,它不会给你比Kirans解决方案更有用的信息。你可以在chrome中访问在线/离线
var _Network_state = true;
function updateIndicator() {
// Show a different icon based on offline/online
if (navigator.onLine) { // true|false
// ... do other stuff
_Network_state = true;
} else {
// ... do other stuff
_Network_state = false;
}
console.info(_Network_state ? 'Online' : 'Offline');
}
// Update the online status icon based on connectivity
window.addEventListener('online', updateIndicator);
window.addEventListener('offline', updateIndicator);
updateIndicator();
在调用ajax之前,检查“\u Network\u state”您不会故意获得有关错误的特定信息(因为否则它可能会被滥用,以了解用户的内部网络)。我非常确定state()与网络无关,而与延迟对象有关。“已拒绝”表示延迟对象已被拒绝,而不是已解决。好的,我知道了。谢谢你提到克劳迪奥。你能提出任何方法来检查网络拒绝吗?不:(我也在努力解决这个问题,不幸的是,我想不出一个解决方案。也许我会调查websocket,看看网络问题的诊断是否更有趣……你可能应该删除这个答案,因为它不能回答问题。@Zero3我目前正试图修改答案,以便它可以满足问题的要求。如果我失败了,那么我可能会删除答案。如果你知道任何答案,你可以在下面发布。我会在看到答案后立即删除答案。谢谢,至少它检测到发生错误(与“尝试捕捉周围”不同。发送似乎没有捕捉到的答案)。我唯一关心的是浏览器对此的支持。如果不可用,除了使用超时之外,您还会如何检测网络级别的错误?可能值得检查一下$。ajax在未能兑现承诺之前是如何检测的。除了Chrome之外的浏览器如何?只有在一个特定浏览器中工作的浏览器不到1/2的答案。这确实是不太可能的答案的2%,100次中的99次
net::ERR\u CONNECTION\u densed
错误仅在浏览器处于联机状态时才会发生,因为它表明从对等方接收到TCP重置(通常意味着服务已关闭)。通常需要一定程度的网络访问。有关此功能的信息…得到了很好的支持,但通常不足以说明用户是否可以连接到您的所有服务器
var _Network_state = true;
function updateIndicator() {
// Show a different icon based on offline/online
if (navigator.onLine) { // true|false
// ... do other stuff
_Network_state = true;
} else {
// ... do other stuff
_Network_state = false;
}
console.info(_Network_state ? 'Online' : 'Offline');
}
// Update the online status icon based on connectivity
window.addEventListener('online', updateIndicator);
window.addEventListener('offline', updateIndicator);
updateIndicator();