【问题标题】:How to programmatically get network errors in AngularJS如何以编程方式在 AngularJS 中获取网络错误
【发布时间】:2017-04-07 23:40:00
【问题描述】:

我在 abcd.js 中有以下代码:

$http({url: 'some url' , method: 'POST', data: , headers: {}
}).then(function(response)) {
.............
}, function error(response) {
..............
})

如果发生错误,response.status 的值 = -1, 响应状态文本 =“”。基本上没有有用的信息。但是在 Chrome 调试器控制台输出中,我看到:

POST:一些 URL/analysis.php net::ERR_NETWORK_IO_SUSPENDED

chrome调试器从analysis.php网络包中提取真正的错误并显示出来。 Q1:为什么status和statusText没有有用的信息?

Q2:是否可以通过编程方式获取网络错误?在上面的失败示例中,我会得到它作为 ERR_NETWORK_IO_SUSPENDED。

Q3:当 $http() 失败时,有没有其他方法可以通过编程来获取网络错误?

【问题讨论】:

  • 关注http://stackoverflow.com/questions/37429136/angularjs-with-global-http-error-handling
  • 哇!谢谢,它准确地告诉了我如何结束我的 http 调用。这与第三季度一致。

标签: javascript php angularjs


【解决方案1】:

Q1:为什么status和statusText没有有用的信息?

因为您无法访问服务器,所以您不会从服务器获得有用的状态码。

Q2:是否可以通过编程方式获取网络错误?

您可以将timeout 设置为$http 以手动捕获网络问题。

Q3:当 $http() 失败时,还有其他方法可以通过编程方式获取网络错误吗?

利用 $http 的错误回调? (这个我不是很清楚)

【讨论】:

  • Q1:谢谢,现在我知道我不能从返回的错误代码中得到任何东西。 Q3:错误回调对象是响应,没有有用的信息 Q2:这是一个很好的建议。让我尝试设置超时,好主意,谢谢
【解决方案2】:

经过多次谷歌搜索,我发现当我得到状态 = -1 时,这意味着由于某些未知原因根本无法访问服务器。所有未知原因都捆绑在一个错误字符串 ERR_NETWORK_IO_SUSPENDED 下。我确实得到了 -1,现在我只是将错误字符串硬编码为 ERR_NETWORK_IO_SUSPENDED。对于其他错误代码,例如 400、404,状态确实会得到数字 bad statuText 具有正确的字符串。所以这个确认的 $http() 调用很好。话虽如此,我们可以结案。感谢所有帮助得出这个结论的人。

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 2017-10-25
    • 2018-10-26
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多