sourcecode

네트 처리 방법::jquery agax에서 ERR_CONNECTION_REFUSED가 발생했습니다.

codebag 2023. 8. 1. 20:30
반응형

네트 처리 방법::jquery agax에서 ERR_CONNECTION_REFUSED가 발생했습니다.

저는 다음과 같은 자바스크립트를 가지고 있습니다.

$.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를 통해 액세스할 수 없고 오류가 발생하기 때문에 https 요청에서 내 에이잭스가 작동하지 않는다는 것입니다.:ERR_CONNECTION_REFUSED그래서 괜찮습니다, 저는 그냥 그것을 처리하고 싶습니다.있습니다.fail아약스 호출에서, 그러나 그것은 처리되지 않습니다.:ERR_CONNECTION_REFUSED어떻게 처리해야 하는지 조언해 주시겠습니까?:ERR_CONNECTION_REFUSED그런 경우에?

저는 또한 아약스의 전화를 마무리하려고 했습니다.try-catch블록, 하지만 그것도 작동하지 않았습니다.

사용할 수 있습니다.timeout의 재산.$.ajax해고하기 위해error콜백

이것은 확실하게 할 것입니다.error서버가 특정 시간 제한 내에 응답하지 않으면 콜백이 실행됩니다.

$.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인터넷이 없을 때도 콜백합니다.

이 실패 함수를 사용하면 jqXHR.status===0 상태로 잡힙니다.

        .fail(function (jqXHR, exception) {
            // Our error logic here
            var msg = '';
            if (jqXHR.status === 0) {
                msg = 'No connection.\n Verify Network.';
                //ERR_CONNECTION_REFUSED hits this one
            } else if (jqXHR.status == 404) {
                msg = 'Requested page not found. [404]';
            } else if (jqXHR.status == 500) {
                msg = 'Internal Server Error [500].';
            } else if (exception === 'parsererror') {
                msg = 'Requested JSON parse failed.';
            } else if (exception === 'timeout') {
                msg = 'Time out error.';
            } else if (exception === 'abort') {
                msg = 'Ajax request aborted.';
            } else {
                msg = 'Uncaught Error.\n' + jqXHR.responseText;
            }
             $('#info').html("<p class='alert alert-danger msg'>Error: " + msg + "</p>");
        })

jqXHR.readyState(즉, $.ajax(...).fail() 메서드에 대한 첫 번째 매개 변수의 readyState 필드가 0인 경우 네트워크 오류가 발생한 것으로 나타납니다.그러나 자바스크립트를 통해 정확한 네트워크 오류가 무엇인지 확인할 수 없었습니다.

jQuery Ajax 코드를 살펴보았는데 xhr.send()(즉, 네트워크 오류를 생성하는 XMLHttpRequest.send() 메서드는 오류를 감지하거나 던지지 않습니다.따라서, 그것을 잡는 것은 불가능합니다.

브라우저가 올바른 오류 메시지를 감지하여 표시하지만 jQuery는 발생하는 특정 유형의 네트워크 오류를 인식하지 못하는 것으로 나타납니다.

그렇게,fail만약 우리가 받는다면 호출되는 것입니다.ERR_CONNECTION_REFUSED하지만 그 이유를 실제로 알 수 있는 방법은 없습니다fail호출 중입니다.실패 방법의 내부에서 왜 실패했는지를 감지할 수 있는 방법이 있습니까? 즉, 시간 초과와 연결 거부 중 하나입니다.그 둘 사이에는 차이가 있습니다.하나는 제가 다시 시도할 수 있지만, 다른 하나는 아무런 차이가 없습니다.

연결 거부 오류를 처리하기 위해 시간 초과를 설정할 필요는 없습니다.

    <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>

언급URL : https://stackoverflow.com/questions/29412865/how-to-handle-neterr-connection-refused-in-jquery-ajax

반응형