JavaScript/jQuery를 사용하여 동적 AJAX 데이터에 대한 페이지 매김 구현

Pagination

AJAX 데이터에 대한 동적 페이지 매김

웹 애플리케이션에서는 사용자 경험을 향상시키기 위해 대규모 데이터 세트를 효율적으로 처리하는 것이 중요합니다. AJAX 요청을 통해 가져온 데이터를 표시할 때 페이지 매김은 사용자 인터페이스를 깔끔하고 관리하기 쉽게 유지하는 최고의 솔루션 중 하나입니다. 페이지 매김을 사용하면 데이터를 더 작은 덩어리로 나누어 사용자가 너무 많은 콘텐츠로 페이지를 압도하지 않고도 목록을 쉽게 탐색할 수 있습니다.

JavaScript와 jQuery는 특히 AJAX를 사용하여 서버에서 데이터를 동적으로 검색할 때 페이지 매김을 구현하기 위한 강력한 도구를 제공합니다. 이러한 기술을 통해 개발자는 사용자 상호 작용을 기반으로 각 페이지에 데이터의 하위 집합만 표시하여 대규모 데이터 세트를 관리할 수 있습니다.

정렬, 필터링 및 검색 기능을 통합하면 사용자 경험이 더욱 풍부해집니다. 이름이나 부서와 같은 속성을 기준으로 데이터를 정렬하고, 범주별로 필터링하고, 글로벌 검색을 활성화하는 것은 대규모 데이터 세트의 접근성을 향상시키는 데 필수적입니다. 페이지 매김과 결합된 이러한 기술은 최적의 데이터 관리를 보장합니다.

이 가이드에서는 JavaScript/jQuery를 사용하여 동적으로 가져온 데이터세트에 페이지 매김을 구현하는 방법을 살펴보고 데이터 표시를 보다 효율적으로 제어할 수 있는 솔루션을 제공합니다. 또한 필터 통합, 정렬 및 오류 처리와 같은 잠재적인 문제에 대해 논의하여 대규모 데이터 세트 관리에 대한 포괄적인 접근 방식을 제공합니다.

명령 사용예
slice() var paginatedData = data.slice(start, end);이 명령은 배열의 섹션을 추출하는 데 사용됩니다. 이 예에서는 현재 페이지에 표시할 직원의 하위 집합을 선택하여 데이터의 페이지를 매기는 데 사용됩니다.
Math.ceil() var totalPages = Math.ceil(totalItems / itemsPerPage);숫자를 가장 가까운 정수로 반올림합니다. 이는 페이지당 항목을 기반으로 모든 데이터를 수용하는 데 필요한 정확한 페이지 수를 결정하는 페이지 매김에 매우 중요합니다.
innerHTML 컨테이너.innerHTML = '';이 명령은 요소의 HTML 콘텐츠를 직접 조작합니다. 여기서는 선택한 페이지에 대한 새 직원 세트를 렌더링하기 전에 직원 컨테이너를 지우는 데 사용됩니다.
appendChild() 컨테이너.appendChild(카드);이 명령은 컨테이너에 새 요소(카드)를 추가하는 데 사용됩니다. 이는 현재 페이지에 대한 직원 카드를 동적으로 생성하고 표시하는 프로세스의 일부입니다.
addEventListener() pageBtn.addEventListener('click', function() {...});이 명령은 요소에서 지정된 이벤트(예: 클릭)를 수신합니다. 여기에서는 페이지 매기기 버튼이 사용자 클릭에 반응하여 페이지 렌더링을 트리거할 수 있습니다.
forEach() paginatedData.forEach(function(employee) {...});이 명령은 직원 배열을 반복하여 각 요소에 대해 기능을 실행합니다. 페이지가 매겨진 데이터에서 각 직원의 프로필을 렌더링하는 것이 중요합니다.
fetch() 가져오기('./assets/employeeDirectory.json')fetch 명령은 데이터를 비동기적으로 검색하기 위해 HTTP 요청을 시작합니다. 여기서는 AJAX를 통해 JSON 파일에서 직원 데이터를 로드하는 데 사용됩니다.
on() $('#pagination li').on('click', function() {...});이 jQuery 명령은 이벤트 핸들러를 요소에 연결합니다. 이 예에서는 사용자가 다른 페이지 번호를 클릭하고 해당 데이터를 로드할 수 있도록 하여 페이지 매김을 활성화합니다.

JavaScript/jQuery에서 AJAX를 사용한 페이지 매김 및 정렬 이해

위에 제공된 스크립트는 다음을 활용하여 대규모 데이터 세트를 효율적으로 표시하는 문제를 해결하는 것을 목표로 합니다. 동적 데이터 가져오기 . 핵심 개념은 JSON 파일에서 직원 목록을 검색하고 데이터를 관리 가능한 섹션으로 분할하여 사용자가 페이지를 압도하지 않고 탐색할 수 있도록 하는 것입니다. AJAX는 이 데이터를 비동기적으로 가져오는 데 사용되므로 서로 다른 데이터 페이지 간에 전환할 때 전체 페이지를 다시 로드할 필요가 없습니다. 이는 성능과 사용자 경험을 유지하는 데 중요합니다.

데이터를 가져온 후에는 현재 페이지를 기반으로 특정 하위 집합만 렌더링하는 것이 중요합니다. 이는 다음을 사용하여 달성됩니다. 해당 페이지에 적합한 직원을 표시하기 위해 데이터 배열의 일부를 추출하는 함수입니다. 예를 들어 직원이 50명이고 사용자가 페이지당 8개의 항목을 보도록 선택한 경우 스크립트는 1페이지에 1~8명의 직원만 표시하고 2페이지에 9~16명의 직원만 표시합니다. 이 접근 방식을 사용하면 사용자가 더 작은 단위로 데이터를 이동할 수 있으므로 페이지 로드 시간과 탐색이 모두 향상됩니다.

그만큼 자체는 JavaScript를 사용하여 동적으로 생성됩니다. 총 페이지 수는 총 데이터 길이와 페이지당 항목 수를 기준으로 계산됩니다. 이는 다음을 사용하여 처리됩니다. 필요한 경우 나머지 직원이 추가 페이지에 배치되도록 하는 기능입니다. 그러면 각 페이지 버튼이 렌더링되어 사용자가 보고 싶은 페이지를 선택할 수 있습니다. 이벤트 리스너가 이 버튼에 연결되어 있으므로 클릭하면 적절한 직원 하위 집합이 화면에 표시됩니다.

페이지 매김 외에도 스크립트는 다음을 허용합니다. 그리고 데이터. 사용자는 이름, 성 또는 부서별로 직원을 정렬할 수 있습니다. 사용자가 드롭다운 메뉴에서 옵션을 선택하면 선택한 속성에 따라 데이터가 재정렬되고 페이지가 새로 고쳐져 이러한 변경 사항이 반영됩니다. 마찬가지로 알파벳 필터를 사용하면 사용자가 문자를 클릭하여 이름이 해당 문자로 시작하는 직원을 볼 수 있습니다. 이러한 정렬, 필터링 및 페이지 매김의 조합은 대규모 데이터 세트를 관리하기 위한 매우 동적이고 사용자 친화적인 인터페이스를 만듭니다.

솔루션 1: jQuery를 사용한 간단한 AJAX 기반 페이지 매김

이 솔루션은 데이터를 동적으로 로드하고 직원 목록에 대한 페이지 매김을 구현하는 기본 jQuery 및 AJAX 접근 방식을 보여줍니다.

// Fetch data and implement pagination
$(document).ready(function() {
    var jsonData = [];
    var itemsPerPage = 8;
    var currentPage = 1;

    // Fetch employee data using AJAX
    $.ajax({
        url: './assets/employeeDirectory.json',
        method: 'GET',
        dataType: 'json',
        success: function(data) {
            jsonData = data;
            renderPage(jsonData, currentPage);
        },
        error: function() {
            alert('Failed to load data.');
        }
    });

    // Function to render employee data on the current page
    function renderPage(data, page) {
        var container = $('#profileContainer');
        container.empty();
        var start = (page - 1) * itemsPerPage;
        var end = start + itemsPerPage;
        var paginatedData = data.slice(start, end);

        paginatedData.forEach(function(employee) {
            var cardHtml = '<div class="card">' +
                '' +
                '<p>' + employee.department + '</p>' +
                '</div>';
            container.append(cardHtml);
        });

        updatePaginationButtons(data.length, page);
    }

    // Function to update pagination buttons
    function updatePaginationButtons(totalItems, currentPage) {
        var totalPages = Math.ceil(totalItems / itemsPerPage);
        $('#pagination').empty();

        for (var i = 1; i <= totalPages; i++) {
            $('#pagination').append('<li>' + i + '</li>');
        }

        $('#pagination li').on('click', function() {
            var page = $(this).text();
            currentPage = parseInt(page);
            renderPage(jsonData, currentPage);
        });
    }
});

솔루션 2: JavaScript 및 AJAX를 사용한 모듈식 페이지 매김

이 솔루션은 AJAX를 사용하여 더 나은 재사용성, 정렬, 검색 및 페이지 매김 처리를 위해 분리된 기능을 갖춘 모듈식 JavaScript 접근 방식을 보여줍니다.

// Fetch data and initialize pagination, sorting, and filtering
document.addEventListener('DOMContentLoaded', function() {
    var jsonData = [];
    var itemsPerPage = 8;
    var currentPage = 1;

    // Fetch employee data using AJAX
    fetch('./assets/employeeDirectory.json')
        .then(response => response.json())
        .then(data => {
            jsonData = data;
            renderPage(jsonData, currentPage);
        })
        .catch(() => alert('Failed to load data'));

    // Render the page with pagination
    function renderPage(data, page) {
        var container = document.getElementById('profileContainer');
        container.innerHTML = '';
        var start = (page - 1) * itemsPerPage;
        var end = start + itemsPerPage;
        var paginatedData = data.slice(start, end);

        paginatedData.forEach(function(employee) {
            var card = document.createElement('div');
            card.className = 'card';
            card.innerHTML = '' +
                            '<p>' + employee.department + '</p>';
            container.appendChild(card);
        });

        updatePaginationButtons(data.length, page);
    }

    // Function to create pagination controls
    function updatePaginationButtons(totalItems, currentPage) {
        var totalPages = Math.ceil(totalItems / itemsPerPage);
        var pagination = document.getElementById('pagination');
        pagination.innerHTML = '';

        for (let i = 1; i <= totalPages; i++) {
            let pageBtn = document.createElement('li');
            pageBtn.innerText = i;
            pageBtn.addEventListener('click', function() {
                currentPage = i;
                renderPage(jsonData, currentPage);
            });
            pagination.appendChild(pageBtn);
        }
    }
});

클라이언트측 캐싱으로 페이지 매김 향상

제공된 예제는 서버 측 가져오기에 중점을 두고 있지만 실시간 업데이트의 또 다른 중요한 측면은 클라이언트 측 캐싱을 사용하여 성능을 향상시키는 것입니다. 이 방법에는 반복적인 서버 요청의 필요성을 줄이기 위해 클라이언트 측에 데이터의 일부를 저장하는 작업이 포함됩니다. 캐싱을 사용하면 AJAX를 통해 데이터를 가져온 후 로컬 메모리나 브라우저 저장소에 저장할 수 있으므로 사용자가 페이지나 필터 사이를 탐색할 때 후속 액세스가 더 빨라집니다. 이는 서버 부하를 줄이고 페이지 매김 시스템의 응답성을 크게 향상시킵니다.

캐싱을 구현하는 것은 데이터 세트가 크고 자주 변경되지 않는 경우 특히 유용할 수 있습니다. 예를 들어 모든 데이터를 한 번 가져오고 JavaScript 변수를 사용하여 로컬로 저장할 수 있습니다. 을 클릭한 다음 캐시된 데이터에서 페이지를 매깁니다. 이 전략은 페이지를 전환하거나 필터를 적용하는 데 더 이상 새 서버 요청이 필요하지 않기 때문에 보다 원활한 환경을 제공합니다. 대신 데이터는 로컬 캐시에서 검색되어 거의 즉시 처리 및 렌더링됩니다.

게다가 캐싱은 다음과 같은 다른 동적 기능과 결합될 수도 있습니다. 그리고 정렬. 데이터가 캐시되면 필터와 정렬을 캐시된 데이터세트에 직접 적용할 수 있습니다. 이런 방식으로 사용자는 서버에서 데이터를 다시 가져올 필요 없이 부서, 이름 또는 기타 속성별로 직원을 필터링할 수 있습니다. 캐싱을 구현하면 대역폭 사용량이 줄어들고 네트워크 대기 시간이 문제가 되는 경우 원활한 검색 환경을 제공하는 데 매우 유용할 수 있습니다.

  1. 클라이언트 측 캐싱은 페이지 매김과 어떻게 작동합니까?
  2. 클라이언트 측 캐싱은 다음을 사용하여 첫 번째 가져온 후 데이터를 로컬로 저장하는 방식으로 작동합니다. 또는 JavaScript 변수. 이렇게 하면 데이터 페이지를 매길 때 후속 AJAX 호출이 필요하지 않습니다.
  3. AJAX 페이지 매김에서 클라이언트 측 캐싱의 이점은 무엇입니까?
  4. 클라이언트 측 캐싱은 서버 로드를 줄이고 페이지 탐색을 더 빠르게 하여 성능을 향상시킵니다. 데이터는 한 번 가져와서 로컬에 저장되므로 페이지 간 전환이나 필터 적용 시 사용자 경험이 향상됩니다.
  5. 캐시된 데이터를 검색 및 정렬에 사용할 수 있나요?
  6. 예, 데이터가 캐시되면 다음 용도로 사용할 수 있습니다. 그리고 추가 서버 요청 없이 로컬로. 그 결과 사용자에게 더욱 빠르고 반응성이 뛰어난 인터페이스가 제공됩니다.
  7. 자주 변경되는 데이터 세트에 캐싱이 적합합니까?
  8. 캐싱은 자주 변경되지 않는 데이터세트에 가장 효과적입니다. 동적 데이터 세트의 경우 캐싱을 계속 사용할 수 있지만 데이터 일관성을 보장하려면 주기적으로 또는 특정 트리거에서 새로 고쳐야 합니다.
  9. 캐시된 데이터를 어떻게 삭제하거나 업데이트하나요?
  10. 캐시된 데이터는 다음에서 수동으로 제거하여 삭제하거나 업데이트할 수 있습니다. 또는 새로운 AJAX 요청을 통해 데이터 세트를 새로 고칩니다. 예를 들어, 전화 저장된 모든 데이터가 삭제됩니다.

효율적인 데이터 처리에 대한 최종 생각

동적 데이터 가져오기에 페이지 매김을 통합하면 성능과 사용자 경험이 모두 향상됩니다. JavaScript/jQuery를 사용하면 데이터를 관리 가능한 덩어리로 나눌 수 있으므로 사용자가 대규모 데이터 세트와 더 쉽게 상호 작용할 수 있습니다. 이렇게 하면 페이지 로드 시간이 줄어들고 원활한 탐색 환경이 제공됩니다.

페이지 매김 외에도 정렬 및 필터링 기능을 결합하면 사용자가 효율적으로 검색을 세분화할 수 있습니다. 이를 통해 동적 데이터는 액세스하기 쉬울 뿐만 아니라 사용자 친화적인 방식으로 제공됩니다. 클라이언트 측 최적화를 활용하면 시스템의 전반적인 응답성이 더욱 향상됩니다.

  1. 에 대한 개요를 제공합니다. jQuery로 페이지 매김을 구현하는 데 사용되는 메서드이며 작업 예제가 포함되어 있습니다. 자세한 내용은 다음에서 확인할 수 있습니다. JavaTpoint - 페이지 매김 예 .
  2. JavaScript/jQuery를 사용한 AJAX 기반 동적 데이터 가져오기에 대한 일반 문서 및 예제는 다음에서 찾을 수 있습니다. jQuery AJAX 문서 .
  3. 필터링 및 정렬 기능 구현에 대한 공식 문서 및 튜토리얼은 다음에서 액세스할 수 있습니다. MDN 웹 문서 - 배열 정렬 .
  4. AJAX를 사용한 페이지 매김 및 동적 데이터 필터링 처리에 대한 이 예는 효율적인 웹 애플리케이션을 구성하는 방법에 대한 실용적인 가이드를 제공합니다. 자세히 알아보기 W3Schools AJAX 튜토리얼 .