source

$.ajax 오류가 타임아웃인지 확인합니다.

gigabyte 2023. 3. 25. 11:21
반응형

$.ajax 오류가 타임아웃인지 확인합니다.

나는 의 마법을 이용하고 있다.jQuery.ajax( settings ).

그런데 타임아웃 설정을 많이 한 사람이 있을까요?

기본적으로 요청에 대한 로컬 시간을 지시하기 위한 것이지만, 타임아웃에 도달하면 어떤 것도 트리거할 수 있습니까?아니면 단순히 응답을 듣는 것을 멈추는 건가요?

jQuery 사이트를 읽어보면 인수가 전달되지 않았음을 알 수 있기 때문에 하나의 기능을 가진 단순한 설정인 것 같습니다.그건 괜찮아.

다만, 타임 아웃에 이르렀을 경우에 경고나 기능을 기동하고 싶습니다.이 경우는, 에러 설정이 트리거 되지 않는 것을 알 수 있습니다.

제 단편은 다음과 같습니다.

$("form#testform").submit(function(){ 

 var allFormValues = $("form#testform").serialize(); 

   $.ajax({
    cache:false,
    timeout:8000,  // I chose 8 secs for kicks
    type:"POST",
    url:"someurl.php",
    data:allFormValues,
    error:function(){ alert("some error occurred") },
    success:function(response){ alert(response); }
   });

});

타임아웃을 어떻게 하면 더 잘 할 수 있는지 아는 사람 있나요?

타임아웃이 발생했을 때 오류 이벤트핸들러가 3개의 인수(xmlhttprequest, textstatus 및 메시지)를 사용할 경우 상태 arg는 'timeout'이 됩니다.

jQuery 문서에 따르면:

두 번째 인수(null 제외)에 사용할 수 있는 값은 "timeout", "error", "not modified" 및 "parserror"입니다.

그러면 그에 따라 오류를 처리할 수 있습니다.

이걸 증명하는 바이올린을 만들었어요

$.ajax({
    url: "/ajax_json_echo/",
    type: "GET",
    dataType: "json",
    timeout: 1000,
    success: function(response) { alert(response); },
    error: function(xmlhttprequest, textstatus, message) {
        if(textstatus==="timeout") {
            alert("got timeout");
        } else {
            alert(textstatus);
        }
    }
});​

jsFiddle을 사용하면 Ajax 콜을 테스트할 수 있습니다.응답하기 전에2초 대기합니다타임아웃 설정을 1초로 설정했기 때문에 에러 아웃이 되어, 에러 핸들러에 「timeout」의 텍스트 상태를 되돌립니다.

이게 도움이 됐으면 좋겠네요!

언급URL : https://stackoverflow.com/questions/3543683/determine-if-ajax-error-is-a-timeout

반응형