프론트엔드/Javascript

[Javascript] jquery infinite scroll

프흐프좋아 2023. 3. 8. 17:34

page 단위로 제공하는 api를 사용하여 ajax 를 사용해서 무한 스크롤을 만들어보자

$(function(){
    $(window).scroll(function(){
        let $window = $(this);
        let scrollTop = $window.scrollTop();
        let windowHeight = $window.height();
        let documentHeight = $(document).height();
        
        // scrollbar의 thumb가 바닥 전 500px까지 도달 하면 리스트를 가져온다.
        if(scrollTop + windowHeight + 500 > documentHeight) { 
            oneTime = true;
            fetchList();
        }
    })
})

아래는 fetchList

$.ajax({
        url: "/url/url2",
        data: {
           dat : dat
        },
        type: "get",
        dataType: "json",
        success: function(result){
            let itemlist = result.list;
            
            // 컨트롤러에서 가져온 방명록 리스트는 result.data에 담겨오도록 했다.
            // 남은 데이터가 5개 이하일 경우 무한 스크롤 종료
            let length = itemlist.length;
            if( length < 5 ){
                isEnd = true;
            }
			
            // 중복 실행 방지
            if(oneTime)
            {
                // 검색 리스트 그려주기
                itemlist.forEach((data, index) => {
                    renderList(data);
                });
            }

            pg = pg +1 ;
            oneTime = false;
        }
    });
let renderList = function(data, vo){
    var html ='<a href=""></a>';
    $('body').append(html);
}

간혹 엄청 빨리내리면 ajax가 데이터를 가져오고 그려주는데 시간이 걸리다 보니..

느릴 수 있는데 고건 어쩔 수 없는 듯