복붙노트

[JQUERY] jQuery.ajax 처리는 응답을 계속 : "성공" "되는 .done"대?

JQUERY

jQuery.ajax 처리는 응답을 계속 : "성공" "되는 .done"대?

해결법


  1. 1.성공은 Ajax 호출에 옵션으로 정의 jQuery를에 성공 콜백의 전통적인 이름이었다. 그것은 어떤 연기에 호출 할 수 있습니다 그러나, 이후 수행 $ .Deferreds 더 정교한 콜백의 구현은, 성공 콜백을 구현하는 좋은 방법입니다.

    성공은 Ajax 호출에 옵션으로 정의 jQuery를에 성공 콜백의 전통적인 이름이었다. 그것은 어떤 연기에 호출 할 수 있습니다 그러나, 이후 수행 $ .Deferreds 더 정교한 콜백의 구현은, 성공 콜백을 구현하는 좋은 방법입니다.

    예를 들어, 성공 :

    $.ajax({
      url: '/',
      success: function(data) {}
    });
    

    예를 들어, 수행 :

    $.ajax({url: '/'}).done(function(data) {});
    

    완료의 좋은 점은 $ 아약스의 반환 값은 응용 프로그램에서 다른 곳으로 결합 할 수있는 연기 약속은 지금이다. 그럼 당신은 몇 가지 다른 장소에서이 아약스 전화를하고 싶은 말은하자. 오히려이 아약스 호출을 함수에 옵션으로 성공 함수에 전달하는 대신, 당신은 단지 함수 반환 $ 자체 아약스하고, 실패, 수행, 또는 무엇과 결합하여 콜백 할 수 있습니다. 참고 항상 요청이 성공 또는 실패 여부를 실행하는 콜백입니다. 완료는 성공에 트리거됩니다.

    예를 들면 :

    function xhr_get(url) {
    
      return $.ajax({
        url: url,
        type: 'get',
        dataType: 'json',
        beforeSend: showLoadingImgFn
      })
      .always(function() {
        // remove loading image maybe
      })
      .fail(function() {
        // handle request failures
      });
    
    }
    
    xhr_get('/index').done(function(data) {
      // do stuff with index data
    });
    
    xhr_get('/id').done(function(data) {
      // do stuff with id data
    });
    

    유지 보수의 관점에서 이것의 중요한 장점은 응용 프로그램 별 기능에 아약스 메커니즘을 포장 한 것입니다. 당신이 미래에 다르게 작동하기 위해 $ 아약스 호출이 필요하거나 다른 아약스 방법을 사용하거나 jQuery를 멀리 이동하려는 경우, 당신은 적어도 약속 또는 반환 확인되는합니다 (xhr_get 정의를 변경해야 끝난있어서, 상기 실시 예)의 경우이다. 응용 프로그램 전반에 걸쳐 다른 모든 참조는 동일하게 유지 될 수 있습니다.

    오류가 서버에 의해보고에 $ 아약스 요청 자체가 성공해도, 실패를 유발하는 당신이 사용하는 파이프 중 하나는 $ .Deferred, 함께 할 수있는 더 많은 (많은 쿨러) 가지가 있습니다. 예를 들면 :

    function xhr_get(url) {
    
      return $.ajax({
        url: url,
        type: 'get',
        dataType: 'json'
      })
      .pipe(function(data) {
        return data.responseCode != 200 ?
          $.Deferred().reject( data ) :
          data;
      })
      .fail(function(data) {
        if ( data.responseCode )
          console.log( data.responseCode );
      });
    }
    
    xhr_get('/index').done(function(data) {
      // will not run if json returned from ajax has responseCode other than 200
    });
    

    자세한 내용은 여기 $ .Deferred에 대한 읽기 : http://api.jquery.com/category/deferred-object/

    참고 : jQuery를 1.8으로는, 파이프는 정확히 같은 방법으로 다음 사용을 위하여 사용이 중지되었습니다.


  2. 2.당신이 비동기해야하는 경우가 아약스에 허위, 대신되는 .done의 성공을 사용해야합니다. 그 밖에 당신은 더 나은되는 .done를 사용합니다. 이 jQuery를 공식 사이트에서입니다 :

    당신이 비동기해야하는 경우가 아약스에 허위, 대신되는 .done의 성공을 사용해야합니다. 그 밖에 당신은 더 나은되는 .done를 사용합니다. 이 jQuery를 공식 사이트에서입니다 :


  3. 3.jqXHR 그들에게 약속의 모든 속성, 메서드 및 동작을 (자세한 내용은 이연 객체 참조) 제공, jQuery를 1.5 약속 인터페이스를 구현하는 기준으로 $ 아약스 ()에 의해 반환되는 객체. 이러한 방법은 경우는 $ 아약스 () 요청 종료라고 하나 개 이상의 함수 인수를. 이 요청을 완료 할 수 후 하나의 요청에, 심지어 할당 콜백에 여러 콜백을 할당 할 수 있습니다. (. 요청이 이미 완료되면, 콜백 즉시 해고)를 jqXHR 객체의 사용 가능한 약속 방법은 다음과 같습니다 :

    jqXHR 그들에게 약속의 모든 속성, 메서드 및 동작을 (자세한 내용은 이연 객체 참조) 제공, jQuery를 1.5 약속 인터페이스를 구현하는 기준으로 $ 아약스 ()에 의해 반환되는 객체. 이러한 방법은 경우는 $ 아약스 () 요청 종료라고 하나 개 이상의 함수 인수를. 이 요청을 완료 할 수 후 하나의 요청에, 심지어 할당 콜백에 여러 콜백을 할당 할 수 있습니다. (. 요청이 이미 완료되면, 콜백 즉시 해고)를 jqXHR 객체의 사용 가능한 약속 방법은 다음과 같습니다 :

    jqXHR.done(function( data, textStatus, jqXHR ) {});
    

    성공 콜백 옵션에 대한 대안 구조는 구현 세부 사항에 대한 deferred.done ()를 참조하십시오.

    jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
    

    오류 콜백 옵션에 대한 대안 구조는 .fail () 메소드는 사용되지 않는에는 .error () 메소드를 대체합니다. 구현 자세한 내용은 () deferred.fail을 참조하십시오.

    jqXHR.always(function( data|jqXHR, textStatus, jqXHR|errorThrown ) { }); 
    

    (1.6 jQuery를 첨가) 전체 콜백 옵션에 대한 대안 구조는 .always () 메소드는 사용되지 않는 .complete () 메소드를 대체합니다.

    데이터, textStatus, 그리고 jqXHR 개체 : 성공적인 요청에 대한 응답으로, 함수의 인수가되는 .done들 ()과 동일합니다. 실패한 요청에 대한 인수가 .fail의 것과 동일합니다 () 다음 jqXHR 객체, textStatus 및 errorThrown. 구현 세부 사항에 대한 deferred.always ()를 참조하십시오.

    jqXHR.then(function( data, textStatus, jqXHR ) {}, function( jqXHR, textStatus, errorThrown ) {});
    

    (jQuery를 1.8로)가되는 .done ()와 .fail () 메소드, 허용하는 기능을 통합 기본 약속을 조작 할 수 있습니다. 구현 자세한 내용은 () deferred.then을 참조하십시오.

  4. from https://stackoverflow.com/questions/8840257/jquery-ajax-handling-continue-responses-success-vs-done by cc-by-sa and MIT license