在纯js中无法处理net :: ERR_CONNECTION_REFUSED

时间:2016-04-11 14:55:26

标签: javascript error-handling custom-error-handling

我使用纯js(没有JQuery)向服务器发送XMLHttpRequest请求。

        var _xhr = new XMLHttpRequest();

        _xhr.open(type, url);
        _xhr.setRequestHeader('Content-Type', 'application/json');

        _xhr.responseType = 'json';
        _xhr.onload = function () {
            if (_xhr.status === 200) {
                var _json = _xhr.response;
                if (typeof _json == 'string')
                    _json = JSON.parse(_json);
                success(_json);
            } else {
                error(_xhr);
            }
        };
        _xhr.onerror = function(){
            console.log('fail');
        };
        try {
            _xhr.send(_to_send);
        } catch (e){
            options.error(_xhr);
        }

当我发送请求时它失败了(这没关系)我收到错误但我无法处理它。 xhr.onerror将消息输出到控制台,但我也得到了OPTIONS url net::ERR_CONNECTION_REFUSED。如何在控制台中避免此消息?

此外,我使用window.onerror来处理所有错误,但我无法处理此OPTIONS url net::ERR_CONNECTION_REFUSED

2 个答案:

答案 0 :(得分:1)

这对我有用:

// Watch for net::ERR_CONNECTION_REFUSED and other oddities.
_xhr.onreadystatechange = function() {
  if (_xhr.readyState == 4 && _xhr.status == 0) {
    console.log('OH NO!');
  }
};

这不仅限于 net :: ERR_CONNECTION_REFUSED ,因为其他网络错误(例如 net :: ERR_NETWORK_CHANGED net :: ERR_ADDRESS_UNREACHABLE net :: ERR_TIMED_OUT )可能会被这种方式“捕获”。我无法在_xhr对象中的任何位置找到这些错误消息,因此对具体发生的网络错误做出程序性决定将不可靠。

答案 1 :(得分:0)

在控制台中无法显示该错误。就像您请求一个不存在的文件一样,无论您是否处理错误,都会在控制台中获得.custom-page-thumbnail-container{ float:left; text-align: center; width: 350px; overflow: hidden; height: 350px; } .custom-page-thumbnail-container img{ width: auto; height: 100%; border-top: 6px double #186F38; margin-left: -100%; margin-right:-100%;}