首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在jquery ajax中处理net::ERR_CONNECTION_REFUSED

如何在jquery ajax中处理net::ERR_CONNECTION_REFUSED
EN

Stack Overflow用户
提问于 2015-04-02 20:21:47
回答 5查看 44.1K关注 0票数 23

我有这样一种javascript:

代码语言:javascript
运行
复制
$.ajax({
    url: "//myapi.com/json",
    dataType: "jsonp"
}).done(function (data) {
    selectText('Id', data.country);
}).fail(function (jqXHR, textStatus, errorThrown) {
    var defaultOption = 'US'
    selectDropdownByText('Id', defaultOption);

    console.log(errorThrown);
});

但问题是,在https请求时,我的ajax不能工作,因为我调用的服务不能通过https访问,并且我得到了错误:ERR_CONNECTION_REFUSED -所以这很好,我只是想处理它。我在ajax调用中有.fail,但它不能处理:ERR_CONNECTION_REFUSED。你能给出一些在这种情况下如何处理:ERR_CONNECTION_REFUSED的建议吗?

我还试图将我的ajax调用包装到try-catch块中,但它也不起作用。

EN

回答 5

Stack Overflow用户

发布于 2015-04-02 20:45:22

您可以使用$.ajaxtimeout属性来触发error回调。

这将确保如果服务器在特定的时间限制内没有响应,就会触发error回调。

代码语言:javascript
运行
复制
$.ajax({
    url: "//myapi.com/json",
    dataType: "jsonp",
    timeout: 15000 // adjust the limit. currently its 15 seconds
}).done(function (data) {
    selectText('Id', data.country);
}).fail(function (jqXHR, textStatus, errorThrown) {
    var defaultOption = 'US'
    selectDropdownByText('Id', defaultOption);

    console.log(errorThrown);
});

这将在没有互联网的情况下触发fail回调。

票数 7
EN

Stack Overflow用户

发布于 2016-09-07 08:24:07

当jqXHR.readyState (即,$.ajax(...).fail()方法的第一个参数的readyState字段)为0时,似乎表示发生了网络错误。但是,我无法通过JavaScript确定确切的网络错误是什么。

我已经查看了jQuery Ajax代码,xhr.send() (即XMLHttpRequest.send())方法(生成网络错误)既不能捕获也不能抛出错误。因此,不可能捕捉到它。

浏览器似乎检测到并显示了正确的错误消息,但jQuery忽略了发生的特定类型的网络错误。

票数 2
EN

Stack Overflow用户

发布于 2015-08-29 03:02:54

所以,如果我们得到一个ERR_CONNECTION_REFUSED,就会调用fail,但实际上没有办法看到为什么要调用fail。有没有办法在fail方法内部检测失败的原因?例如超时和连接被拒绝?这两者是有区别的。一个我可以重试,另一个没有区别。

您不需要设置超时来处理连接被拒绝的失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29412865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档