JQuery의 ajax done () 메서드를 어떻게 확장합니까?

조엘 조엘 빙 크스

다음과 같은 jQuery ajax 함수가 있습니다.

jQuery.ajax({
            url : '/blabla',
            method : 'post',
            data: {
                bla : bla
            }
        }).done(function(data) {
            // do lots of stuff
        });

.. done 콜백 함수에 전달 된 데이터에 session_timed_out 값이 없는지 확인하는 기능을 추가하고 싶습니다. 위의 기능과 유사한 많은 기능이 있지만 모두 다른 작업을 수행하지만 세션이 먼저 시간 초과되었는지 확인해야합니다. done ()을 확장하는 적절한 방법이 있으므로 처음에 시간 초과를 확인합니까? 나는 이와 같은 것을 시도했지만 실패했습니다.

var myAjax = function(options,callback){ 
    var defaults = {              
        done: function(data){  //hijack the success handler?
            if(check(data)){    
                callback(data); 
            }
        }
    };
    jQuery.extend(options,defaults);  
    return jQuery.ajax(options); 
}

이 확장 함수를 사용하면 이전과 같이 작동합니다. 즉, 실제 구현에서 done () 콜백으로 대체되는 것처럼 보이므로 확인이 호출되지 않습니다. 그래서 처음에 세션 타임 아웃을 먼저 확인하도록 done () 함수를 "장식"하거나 확장하는 방법이 있는지 알고 싶습니다. 아니면 모든 ajax 완료에 동일한 세션 검사를 수동으로 추가해야합니까?

호아킨 O

이 코드 조각은 jQuery ajax 메서드를 재정의하므로 성공적으로 반환되면 추가 검사를 추가 할 수 있습니다.

(function($) {

    var yourCustomCheck = function(ajaxRes) {
        // Do whatever you need and return a boolean
    };

    var oldAjax = $.ajax;
    $.ajax = function(opts) {
        return $.Deferred(function() {
            var _def = this;

            oldAjax.call(this, opts).done(function(res) {
                console.log("this is done first");
                if(yourCustomCheck.call(this, res)) _def.resolve(res);
                else _def.reject("timeout");
            }).fail(function() {
                _def.reject();
            });
        })
    }

})(jQuery);

그 후 $.ajax()정상적으로 사용할 수 있습니다 ..

$.ajax({
    .....
}).done(function(res) {
    console.log("ok");
}).fail(function() {
    console.log("no ok");
});

다음은 작동 예제가있는 jsfiddle입니다. https://jsfiddle.net/jormaechea/kffyo7qL/1/

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

.done () ajax에서 'change'이벤트 후 jquery를 어떻게 실행합니까?

분류에서Dev

NSButton의 메서드로 NSButtonCell을 어떻게 확장합니까?

분류에서Dev

angularjs의 공장에서 ajax를 어떻게 호출합니까?

분류에서Dev

angularjs의 공장에서 ajax를 어떻게 호출합니까?

분류에서Dev

jQuery AJAX로 PHP 데이터를 어떻게 확인합니까?

분류에서Dev

jQuery 지연 객체의 done 메서드에 "데이터"가 어떻게 제공됩니까?

분류에서Dev

NTFS 파티션의 크기를 어떻게 확장합니까?

분류에서Dev

NTFS 파티션의 크기를 어떻게 확장합니까?

분류에서Dev

Bash의 산술 확장에서 8 진수를 어떻게 반환합니까?

분류에서Dev

서버 측의 jQuery Ajax에서 "데이터"를 검색하려면 어떻게해야합니까?

분류에서Dev

jquery를 사용하여 플러그인에서 공용 메서드를 확장하려면 어떻게해야합니까?

분류에서Dev

왜 jQuery AJAX #then 또는 #done 또는 #fail 메소드가 필요합니까?

분류에서Dev

Typescript에서 확장 한 클래스의 메서드를 어떻게 구현할 수 있습니까?

분류에서Dev

AJAX를 통해 콘텐츠를로드 한 후 jQuery에서 마우스 핸들러를 어떻게 확인합니까?

분류에서Dev

바닐라 JS 에서이 ajax jquery를 어떻게 수행합니까?

분류에서Dev

여러 파일의 확장자를 변경하려면 어떻게합니까?

분류에서Dev

여러 파일의 확장자를 변경하려면 어떻게합니까?

분류에서Dev

Javascript에서 부모의 메서드를 어떻게 재정의합니까?

분류에서Dev

Jest에서 Mongoose 문서의 "get"메소드를 어떻게 모의합니까?

분류에서Dev

Ajax 호출의 소스를 어떻게 확인할 수 있습니까?

분류에서Dev

Jest로 모의 모듈의 메서드를 어떻게 모의합니까?

분류에서Dev

arrayList의 다른 개체에서 메서드를 어떻게 호출합니까?

분류에서Dev

vue에서 전역 메서드를 어떻게 정의합니까?

분류에서Dev

Retrofit의 GET 메서드에서 변수를 어떻게 사용합니까?

분류에서Dev

InputStream의 읽기 메서드에서 byteCount를 어떻게 계산합니까?

분류에서Dev

양식 제출 대신 jQuery Post / Ajax를 어떻게 사용합니까?

분류에서Dev

Retrofit onResponse에서 메소드의 데이터를 어떻게 반환합니까?

분류에서Dev

변수의 속성과 메서드를 어떻게 표시합니까?

분류에서Dev

다른 클래스의 메서드를 어떻게 실행합니까?

Related 관련 기사

  1. 1

    .done () ajax에서 'change'이벤트 후 jquery를 어떻게 실행합니까?

  2. 2

    NSButton의 메서드로 NSButtonCell을 어떻게 확장합니까?

  3. 3

    angularjs의 공장에서 ajax를 어떻게 호출합니까?

  4. 4

    angularjs의 공장에서 ajax를 어떻게 호출합니까?

  5. 5

    jQuery AJAX로 PHP 데이터를 어떻게 확인합니까?

  6. 6

    jQuery 지연 객체의 done 메서드에 "데이터"가 어떻게 제공됩니까?

  7. 7

    NTFS 파티션의 크기를 어떻게 확장합니까?

  8. 8

    NTFS 파티션의 크기를 어떻게 확장합니까?

  9. 9

    Bash의 산술 확장에서 8 진수를 어떻게 반환합니까?

  10. 10

    서버 측의 jQuery Ajax에서 "데이터"를 검색하려면 어떻게해야합니까?

  11. 11

    jquery를 사용하여 플러그인에서 공용 메서드를 확장하려면 어떻게해야합니까?

  12. 12

    왜 jQuery AJAX #then 또는 #done 또는 #fail 메소드가 필요합니까?

  13. 13

    Typescript에서 확장 한 클래스의 메서드를 어떻게 구현할 수 있습니까?

  14. 14

    AJAX를 통해 콘텐츠를로드 한 후 jQuery에서 마우스 핸들러를 어떻게 확인합니까?

  15. 15

    바닐라 JS 에서이 ajax jquery를 어떻게 수행합니까?

  16. 16

    여러 파일의 확장자를 변경하려면 어떻게합니까?

  17. 17

    여러 파일의 확장자를 변경하려면 어떻게합니까?

  18. 18

    Javascript에서 부모의 메서드를 어떻게 재정의합니까?

  19. 19

    Jest에서 Mongoose 문서의 "get"메소드를 어떻게 모의합니까?

  20. 20

    Ajax 호출의 소스를 어떻게 확인할 수 있습니까?

  21. 21

    Jest로 모의 모듈의 메서드를 어떻게 모의합니까?

  22. 22

    arrayList의 다른 개체에서 메서드를 어떻게 호출합니까?

  23. 23

    vue에서 전역 메서드를 어떻게 정의합니까?

  24. 24

    Retrofit의 GET 메서드에서 변수를 어떻게 사용합니까?

  25. 25

    InputStream의 읽기 메서드에서 byteCount를 어떻게 계산합니까?

  26. 26

    양식 제출 대신 jQuery Post / Ajax를 어떻게 사용합니까?

  27. 27

    Retrofit onResponse에서 메소드의 데이터를 어떻게 반환합니까?

  28. 28

    변수의 속성과 메서드를 어떻게 표시합니까?

  29. 29

    다른 클래스의 메서드를 어떻게 실행합니까?

뜨겁다태그

보관