gpt4 book ai didi

javascript - 如何捕捉网络::ERR_CONNECTION_REFUSED

转载 作者:IT王子 更新时间:2023-10-29 03:06:26 51 4
gpt4 key购买 nike

有没有办法捕获加载资源失败:net::ERR_CONNECTION_REFUSED,我试过了:

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

失败函数可以捕获,但我没有得到有关错误的信息,要么是:

  • ERR_NAME_NOT_RESOLVED
  • ERR_CONNECTION_REFUSED
  • ERR_BLOCKED_BY_CLIENT
  • ERR_TUNNEL_CONNECTION_FAILED(使用代理时)

或其他任何问题.. 问题是,如何得到那种错误?

最佳答案

我什至尝试使用 javascript XMLHttpRequest() 实现目标

var xhttp= new XMLHttpRequest();
try{
xhttp.onreadystatechange = function() {
console.log(xhttp);
if (xhttp.readyState == 4 && xhttp.status == 0) {
alert("Unknown Error Occured. Server response not received.");
}
};
xhttp.open("POST", "http://localhost:8080/data", true);
xhttp.send();
}catch(e){
console.log('catch', e);
}

上面的代码片段只给出了一般的错误处理,而我并没有得到错误背后的确切原因。 try...catch 语句未能捕获任何内容,因为 try block 内的函数均未抛出任何异常。似乎 XMLHttpRequest 在后台线程中运行,因此它的运行时错误无法被捕获。

由于 jQuery 是一个实际上是 javascript 的库,它对 $.post() 的行为也相同,因为 $.post() 也使用 XMLHttpRequest 幕后花絮。

以下是 jQuery 版本,它也将处理一般错误,因为我们无法确切知道错误原因。

try {
$.post('http://localhost:8080/data', {}, function(res) {}).fail(function() {
alert("Unknown Error Occured. Server response not received.");
});
} catch (e) {
console.log('catch', e);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

结论

由于 javascript XMLHttpRequest() 在处理不同的错误状态方面仍然不够有效,我们无法知道 AJAX 请求网络错误背后的确切原因。我们只能捕获一般错误和一些其他已知的状态代码,例如

"404" for file not found

"500" for server not responding

More can be known from https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

更新:自从我上次更新这篇文章以来已经有很长时间了。我看到很少有答案试图实现类似的目标,但仍然收效甚微。正如在这个线程的一些答案中提到的,我们也可以使用 XMLHttpRequest.onerror 回调函数来捕获一些一般错误,但如果您仍在使用 IE,那么它可能不起作用。

关于javascript - 如何捕捉网络::ERR_CONNECTION_REFUSED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556398/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com