>  기사  >  웹 프론트엔드  >  jQuery Datatable에서 커서 기반 페이지 매김을 구현하는 방법은 다음과 같습니다.

jQuery Datatable에서 커서 기반 페이지 매김을 구현하는 방법은 다음과 같습니다.

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-09-24 06:17:02881검색

Here

웹 애플리케이션에서 대규모 데이터 세트로 작업할 때 페이지 매김은 성능과 사용자 경험에 매우 중요합니다. 데이터 테이블에 일반적으로 사용되는 표준 오프셋 기반 페이지 매김은 대규모 데이터 세트에는 비효율적일 수 있습니다.

커서 기반 페이지 매김은 특히 실시간 업데이트나 대용량 데이터 로드를 처리할 때 더욱 성능이 좋은 대안을 제공합니다. 이 기사에서는 jQuery DataTable에서 커서 기반 페이지 매김을 구현하는 방법을 안내합니다.

jQuery DataTable에서 커서 기반 페이지 매김을 구현하는 단계

1.환경설정
페이지 매기기 논리를 살펴보기 전에 다음 사항을 확인하세요.

나. jQuery
ii. DataTables 플러그인
iii. 커서 기반 페이지 매김을 지원하는 백엔드 API(또는 데이터베이스)

2.백엔드 API 구성
커서 기반 페이지 매김은 필요한 데이터를 반환하기 위해 백엔드에 크게 의존합니다. 다음을 포함하여 JSON 응답을 반환하는 REST API로 작업한다고 가정해 보겠습니다.

데이터: 기록의 배열
커서: 데이터세트의 현재 위치를 나타내는 ID 또는 타임스탬프와 같은 고유 식별자입니다.

다음은 서버에서 페이지를 매긴 응답의 예입니다.

{
  "data": [
    {"id": 101, "name": "John Doe", "email": "john@example.com"},
    {"id": 102, "name": "Jane Smith", "email": "jane@example.com"}
  ],
  "pagination": {
     "next_cursor": "eyJpZCI6MTgsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
        "prev_cursor": "eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6ZmFsc2V9"
   }
}

3.jQuery DataTable 초기화
DataTable은 jQuery를 사용하여 초기화되고 백엔드 API와 연결됩니다. 기본 구조는 다음과 같습니다.

var ajaxurl = "your-ajax-url";

var oTable = jQuery("#product_list_tbl").DataTable({
  preDrawCallback: function (settings) {
    var dt = jQuery("#product_list_tbl").DataTable();
    var settings = dt.settings();
    if (settings[0].jqXHR) {
      settings[0].jqXHR.abort();
    }
  },
  pagingType: 'simple',
  pageLength: 9,
  serverMethod: "post",
  ajax: {
    url: ajaxurl + "?action=search_ids",
    data: function (d) {
      d.search_id = jQuery("#search_id").val();
      // other params
    }
  },
});

4.페이지 매김 컨트롤 사용자 정의

var ajaxurl = "your-ajax-url";

var oTable = jQuery("#product_list_tbl").DataTable({
  preDrawCallback: function (settings) {
    var dt = jQuery("#product_list_tbl").DataTable();
    var settings = dt.settings();
    if (settings[0].jqXHR) {
      settings[0].jqXHR.abort();
    }
  },
  pagingType: 'simple',
  pageLength: 9,
  serverMethod: "post",
  ajax: {
    url: ajaxurl + "?action=search_ids",
    data: function (d) {
      d.cursor = jQuery("#product_list_tbl").data('current-cursor') || '';
      d.search_id = jQuery("#search_id").val();
      // other params
    }
  },
  drawCallback: function (json) {

    const pagination = json.json.pagination;

    if (pagination.next_cursor) {
      jQuery(document).find('.paginate_button.next').removeClass('disabled');
      jQuery(document).find('.paginate_button.next').attr('data-cursor', json.json.pagination.next_cursor ?? '' );
    } else {
      jQuery(document).find('.paginate_button.next').addClass('disabled');
    }

    if (pagination.prev_cursor) {
      jQuery(document).find('.paginate_button.previous').removeClass('disabled');
      jQuery(document).find('.paginate_button.previous').attr('data-cursor', json.json.pagination.prev_cursor ?? '' );
    } else {
      jQuery(document).find('.paginate_button.previous').addClass('disabled');
    }

  },
});

 // Custom click handlers for pagination buttons
  jQuery(document).on('click', '#product_list_tbl_paginate .paginate_button', function(e) {
    e.preventDefault();
    e.stopPropagation(); // Prevent event from bubbling up

    // Only proceed if this is actually a 'next' or 'previous' button
    if (!jQuery(this).hasClass('next') && !jQuery(this).hasClass('previous')) {
      return;
    }

    var cursor = jQuery(this).attr('data-cursor');

    // Set the cursor directly on the table element
    jQuery("#product_list_tbl").data('current-cursor', cursor);

    // Reload the table with the new cursor
    oTable.ajax.reload();
  });

  // Disable default DataTables click handlers for pagination
  jQuery(document).off('click.DT', '#product_list_tbl_paginate .paginate_button');

5.API 및 프런트엔드 동기화 처리
사용자가 다음 또는 이전 버튼을 클릭할 때마다 커서가 업데이트되어 백엔드로 전송됩니다. 백엔드는 현재 커서 위치부터 시작하여 데이터베이스의 레코드를 가져오고 적절한 데이터 세트를 DataTable에 반환합니다.

요약: 여기를 클릭하세요

결론
커서 기반 페이지 매김은 대규모 데이터 세트 또는 실시간 애플리케이션으로 작업할 때 실용적이고 효율적인 접근 방식입니다. jQuery DataTable에 커서 기반 페이지 매김을 구현하면 성능이 향상되고 사용자 경험이 향상되며 정확한 데이터 처리가 보장됩니다. 이 기술은 빠르고 확장 가능하며 안정적인 데이터 관리가 필요한 최신 애플리케이션에 특히 유용합니다.

이 가이드가 귀하의 프로젝트에서 커서 기반 페이지 매김을 구현하는 데 도움이 되기를 바랍니다. 즐거운 코딩하세요!

위 내용은 jQuery Datatable에서 커서 기반 페이지 매김을 구현하는 방법은 다음과 같습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.