새소식

Js/Jquery

ajax - 통신 중 로딩 이미지 출력

  • -

코드

js

function lodingSign() {
    // 로딩 이미지 div
    var loading_div = `<div id='loading_div'>
                        <img src='loding.gif' id="loading_img"/>
                    </div>`;

    $('body').append(loading_div);
    // 마우스 커서 로딩 중으로 변경
    $('html').css("cursor", "wait");
    // ajax 함수 실행 버튼 클릭 이벤트 차단
    $('button').attr('onclick', 'return false;');
}

function lodingImgHide() {
    // 마우스 커서 기본값으로 변경
    $('html').css("cursor", "auto");
    // ajax 함수 실행 버튼 클릭 이벤트 차단 해제
    $('button').attr('onclick', '함수이름()');
    // 로딩 이미지 삭제
    $('#loading_div').remove();
}

// 기본 ajax 함수
function 함수이름() {
    // 로딩 이미지 출력
    lodingImgShow();
    var Params = {};
    $.ajax({
        url: "/url",
        type: 'POST',
        data: Params,
        datatype: 'json',
        // ajax 통신 성공 시
        success: function (result) {
            switch (result.status) {
                case 'complete':
                    console.log('성공 시');
                    break;
                case 'fail':
                    console.log('실패 시');
                    break;
                default:
                    console.log('예외 발생 시');
                    break;
            }
        },
        // ajax 통신 중 에러 발생 시
        error: function (request, status, error) {
            // 에러 출력
            console.error("code:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error + "\n" + "request:" + request);
        },
        // ajax 통신 종료 시 
        complete: function () {
            // 로딩 이미지 종료
            lodingImgHide();
        }
    });
}

css

#loading_div {
    display: flex;
    justify-content: center;
    align-items: center;
    position: fixed;
    width: 100vw;
    height: 100vh;
    top: 0;
    left: 0;
    z-index: 9999;
    background-color: #000;
    opacity: 0.5;
}

#loading_img {
    width: 40px;
    position: relative;
    display: block;
    margin: 0px auto;
}

로딩 중 gif

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.