💡Lỗi hay gặp khi dùng DataTables

Khi sử dụng DataTables (https://datatables.net/), một số lỗi phổ biến mà người dùng hay gặp gồm:


1️⃣ Lỗi “DataTables warning: table id=…”

  • Nguyên nhân:

    • HTML table chưa đúng cấu trúc (<thead><tbody> không đồng nhất).

    • Số cột trong <thead> không khớp với số cột trong <tbody>.

    • Table chưa được load khi gọi $('#table').DataTable() (thường gặp khi table được tạo động bằng JS/Ajax).

  • Cách khắc phục:

    • Đảm bảo <thead><tbody> có cùng số cột.

    • Khởi tạo DataTable sau khi HTML table đã có trong DOM.

    • Nếu dùng Ajax, sử dụng $('#table').DataTable({ ajax: ... }).


2️⃣ Lỗi không hiển thị dữ liệu Ajax

  • Nguyên nhân:

    • Response JSON không đúng format.

    • Trường data trong JSON không đúng. Ví dụ DataTables mặc định đòi {"data": [...]}.

  • Cách khắc phục:

    $('#table').DataTable({
        ajax: {
            url: '/api/data',
            dataSrc: '' // nếu JSON trả về mảng trực tiếp
        }
    });
    

3️⃣ Các cột không sắp xếp hoặc filter không đúng

  • Nguyên nhân:

    • Dữ liệu trong cột có format khác nhau (ví dụ số nhưng lưu dưới dạng string).

    • Dữ liệu HTML trong <td> khiến DataTables không parse được.

  • Cách khắc phục:

    • Dùng render để định dạng dữ liệu chuẩn:

      { data: 'price', render: $.fn.dataTable.render.number(',', '.', 0, '$') }
      
    • Sử dụng type custom nếu cần sort phức tạp.


4️⃣ Lỗi CSS / layout

  • Nguyên nhân:

    • Thiếu CSS của DataTables hoặc xung đột với framework (Bootstrap, AdminLTE).

    • Table bị nhỏ hoặc mất thanh cuộn.

  • Cách khắc phục:

    • Nhớ import đầy đủ CSS:

      <link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/jquery.dataTables.min.css">
      
    • Nếu dùng Bootstrap: dataTables.bootstrap5.min.css.

    • Bật scrollX: true nếu table quá rộng.


5️⃣ Lỗi khi dùng destroy() / re-initialize table

  • Nguyên nhân:

    • Gọi $('#table').DataTable() nhiều lần mà không destroy table cũ.

  • Cách khắc phục:

    if ($.fn.DataTable.isDataTable('#table')) {
        $('#table').DataTable().destroy();
    }
    $('#table').DataTable({...});
    

6️⃣ Lỗi “Cannot read property ‘...' of undefined”

  • Nguyên nhân:

    • Dữ liệu không đúng key mà columns.data đang trỏ đến.

    • Table chưa render xong trước khi thao tác.

  • Cách khắc phục:

    • Kiểm tra key đúng với JSON.

    • Sử dụng columns: [{ data: 'fieldName' }].


7️⃣ Lỗi khi dùng Buttons / Export

  • Nguyên nhân:

    • Thiếu JS hoặc CSS liên quan Buttons, JSZip (Excel), pdfmake (PDF).

  • Cách khắc phục:

    • Import đầy đủ các file hỗ trợ export.

    • Kiểm tra thứ tự import đúng: jQuery → DataTables → Buttons → JSZip / pdfmake.

Nhận xét

Bài đăng phổ biến từ blog này

🌈 Tự Động Highlight Code Trong Blogger

🧭CRUD CHUẨN LARAVEL

🚀01 giờ học cách sử dụng Developer Console