Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理jQueryAjax中的net::ERR\u连接被拒绝_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 如何处理jQueryAjax中的net::ERR\u连接被拒绝

Javascript 如何处理jQueryAjax中的net::ERR\u连接被拒绝,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有这种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',

我有这种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\u CONNECTION\u densed
-这很好,我只想处理这个问题。我在ajax调用中有
.fail
,但它没有处理
:ERR\u CONNECTION\u densed
在这种情况下,您能就如何处理
:ERR\u CONNECTION\u densed
给出建议吗


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

您可以使用
$的
timeout
属性。ajax
触发
错误
回调

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

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

这将在没有internet的情况下触发
fail
回调。

因此,如果我们得到
ERR\u连接被拒绝
,则调用
fail
,但无法真正了解调用
fail
的原因。有没有一种方法可以检测失败方法内部的失败原因?i、 e.超时与连接被拒绝?两者之间有区别。一个我可以重试,另一个没有区别


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

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

我已经看过jQueryAjax代码,xhr.send()(即XMLHttpRequest.send())方法(生成网络错误)既不会捕获错误,也不会抛出错误。因此,不可能抓住它

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

    <code>$.ajax({
         url: "//myapi.com/json", //this is problem
         dataType: "jsonp"
    }).done(function (data) {
         selectText('Id', data.country);
    }).fail(function (jqXHR, textStatus, errorThrown) {
        var defaultOption = 'US'
        selectDropdownByText('Id', defaultOption);

        console.log(errorThrown);
    });</code>
相对路径不好,

 <code>$.ajax({
        url: "myapi.com/json", //this will work
        dataType: "jsonp"
    }).done(function (data) {
        selectText('Id', data.country);
    }).fail(function (jqXHR, textStatus, errorThrown) {
        var defaultOption = 'US'
        selectDropdownByText('Id', defaultOption);

        console.log(errorThrown);
    });</code>

您是否尝试了.error属性而不是.fail?请尝试在ajax选项中使用
timeout
属性来触发错误callback@RickHoving是的<代码>.error没有为这种情况触发。所以没有其他方法了?你知道为什么cath不处理那个eror吗<代码>尝试{$.ajax({…});}catch(ex){}我可以确认,如果不显式设置timeout属性,就无法捕获此类问题。另一种方法是检查成功处理程序中的数据值,如果该值为空,则执行类似于错误处理程序的操作:在我的情况下,设置超时仍然会导致
net::ERR\u CONNECTION\u拒绝
fail
未运行。还有其他需要满足的条件吗?@sreginogemoh关于try{}catch块,它们对同步代码很有用。使用异步ajax调用,运行代码并注册回调。这些在几秒钟后被触发,而不会阻塞其余的代码,因此当http promise对象被满足或拒绝时,您的try{}catch块已经完成运行。@mohamedrias:我喜欢这个主题,但我也有同样的问题。我尝试使用timeout,但是:它在超时之前失败,并且仍然有错误日志消息。.fail()被触发,因此这是50%的胜利。如果超时“失败”,函数的“error”参数将是“timeout”,而不是“error”