programing

jQuery: 실패한 AJAX 요청에 대한 폴백 처리

powerit 2023. 3. 4. 15:14
반응형

jQuery: 실패한 AJAX 요청에 대한 폴백 처리

jQuery는 실패한AJAX 콜에 폴백을 제공할 수 있습니까?제 시도는 이렇습니다.

function update() {
    var requestOK = false;

    $.getJSON(url, function(){
        alert('request successful');
        requestOK = true;
    });

    if (!requestOK) {
        alert('request failed');
    }
}

유감스럽게도 $.getJSON() 메서드의 콜백 함수가 호출되어도 콜백 함수가 요청을 설정할 기회가 생기기 전에 'request failed'라는 메시지가 나타납니다.OK 변수코드가 병렬로 실행되기 때문인 것 같아요.그런 상황에 대처할 방법이 있나요?콜백 기능을 포함한 체인 또는 AJAX 요청을 기다리는 방법을 생각해 보았습니다.하지만 어떻게요?그거 할 줄 아는 사람 있어?

하위 수준 $.ajax 호출 또는 ajaxError 함수를 사용해야 합니다.다음은 $.ajax 메서드입니다.

function update() {
  $.ajax({
    type: 'GET',
    dataType: 'json',
    url: url,
    timeout: 5000,
    success: function(data, textStatus ){
       alert('request successful');
    },
    fail: function(xhr, textStatus, errorThrown){
       alert('request failed');
    }
  });
}

편집 추가했습니다.timeout에게$.ajax5초로 설정합니다.

Dougs의 답은 맞지만 실제로는$.getJSON캐치 에러(사용할 필요가 없음)$.ajax체인으로 고정합니다.getJSON에의 호출과 함께 전화하다fail기능:

$.getJSON('/foo/bar.json')
    .done(function() { alert('request successful'); })
    .fail(function() { alert('request failed'); });

라이브 데모: http://jsfiddle.net/NLDYf/5/

이 동작은 jQuery의 일부입니다.지연 인터페이스
기본적으로는 액션을 호출한 후 이벤트를 비동기 액션에 부가할 수 있습니다.즉, 액션에 이벤트 함수를 전달할 필요가 없습니다.

jQuery에 대한 자세한 내용은 이쪽.보류처: http://api.jquery.com/category/deferred-object/

네, jQuery에 포함되어 있습니다.jquery 매뉴얼에 있는 문서를 참조하십시오.

Ajax Error가 필요할 수 있습니다.

저는 이 방법을 선호합니다.그것은 약속을 되돌려 사용할 수 있기 때문입니다.(성공)Function, fail Function).필요한 곳이면 어디든지 사용할 수 있습니다.

var promise = $.ajax({
    type: 'GET',
    dataType: 'json',
    url: url,
    timeout: 5000
  }).then(function( data, textStatus, jqXHR ) {
    alert('request successful');
  }, function( jqXHR, textStatus, errorThrown ) {
    alert('request failed');
});

//also access the success and fail using variable
promise.then(successFunction, failFunction);

찾으시는 것은 jquery ajax 객체에 대한 오류 옵션이라고 생각합니다.

getJSON은 에 대한 래퍼입니다.$.ajaxobject는 에러 옵션에 액세스 할 수 없습니다.

편집: dcneiner는 사용자가 사용해야 할 코드의 좋은 예를 제시했습니다.(회신을 올리기 전부터)

언급URL : https://stackoverflow.com/questions/1844370/jquery-handle-fallback-for-failed-ajax-request

반응형