본문 바로가기

목록이 없습니다.

[jQuery] ajax beforeSend에서 중단 시키는 방법 (stop $.ajax on beforeSend)

Framework/jQuery
    반응형

    jquery
    jquery

     

    jQuery(제이쿼리) $.ajax 함수에서 beforeSend 시점에 중단하는 방법

    jQuery(제이쿼리)에서 $.ajax 쓰다보면 beforeSend 시점에서 함수를 중단하고 싶은 경우가 생긴다.
    ( 예를 들어 beforeSend에서 검증을 한다든지 설정 시 비어있는 값이 있는경우에는 alert를 띄우고 중단시키고 싶은,, )

     

    이 때 beforeSend에서 return false를 하면 beforeSend함수 자체는 중단이 되고 그 안에서 해당 라인 다음 로직은 수행되지 않겠지만 정작 ajax로 해당 url의 컨트롤러, 서블릿의 반환이 성공적으로 이루어졌을 때 수행되는 success 영역을 막진 못할것이다.

     

    이런 상황에서 success로 넘어가지 않고 beforeSend에서 중단하고 싶은 경우 다음과 같이 코드를 작성하면 된다.

     

    예제

    $.ajax({
        type : "POST",
        url : "your url",
        dataType : "json",
        data : "your Data",
        traditional : true,    // or false, your choice
        async : false,    // or true, your choice
        beforeSend : function(xhr, opts) {
            // when validation is false
            if (false) {
                xhr.abort();
            }
        },
        success : function() {
            // success code
        },
        error : function() {
            // error code
        }
    });
    

     

    위에서 말했듯이 예제코드에서 xhr.abort() 대신에 return false를 넣게 되면 beforeSend의 아래 부분의 로직이 수행되는것을 막을 수는 있겠지만 success에 작성해놓은 함수는 막지 못할 것이다.

     

    따라서 예제코드에서와 같이 xhr.abort()를 작성하여 전체 ajax가 전송되는것을 막을 수 있다.

    반응형