How to handle net::ERR_CONNECTION_REFUSED in jquery ajax
我有这种javascript:
1 2 3 4 5 6 7 8 9 10 11 | $.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访问,我收到错误
在这种情况下,您能就如何处理
我也试图将我的ajax调用包装到
您可以使用
如果服务器在特定时间限制内没有响应,这将确保触发
1 2 3 4 5 6 7 8 9 10 11 12 | $.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); }); |
当没有互联网时,这将触发
当jqXHR.readyState(即$ .ajax(...)。fail()方法的第一个参数的readyState字段)为0时,似乎发生了网络错误。但是,我无法通过JavaScript确定确切的网络错误。
我查看了jQuery Ajax代码,xhr.send()(即XMLHttpRequest.send())方法(生成网络错误)不会捕获也不会抛出错误。因此,不可能抓住它。
浏览器似乎检测并显示正确的错误消息,但jQuery无视发生的特定类型的网络错误。
因此,如果我们得到
您不需要设置超时来处理连接拒绝失败。