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();