$('#exampleTable').DataTable({
"responsive": true,
"processing": true,
"serverSide": true,
"ajax": {
"url": "{{ route('fetchUserData') }}",
"type": "GET",
"error": function(xhr, status, errorThrown) {
console.error("Error during AJAX request: ", errorThrown);
},
"dataSrc": function(response) {
console.info("Data received from server: ", response);
if (response.records && response.records.length) {
console.info("Data entries loaded:");
response.records.forEach(function(record) {
console.log(record);
});
return response.records;
} else {
console.warn("No records found.");
return [];
}
}
},
"columns": [
{ "data": "username" },
{ "data": "points" },
{ "data": "followers" },
{ "data": "referrals" }
],
"language": {
"emptyTable": "No records to display" // Custom message for empty table
},
"initComplete": function() {
$('div.dataTables_length select').addClass('form-select mt-1 w-full');
$('div.dataTables_filter input').addClass('form-input block w-full mt-1');
},
"drawCallback": function() {
$('table').addClass('min-w-full bg-gray-50');
$('thead').addClass('bg-blue-100');
$('thead th').addClass('py-3 px-5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wide');
$('tbody tr').addClass('border-t border-gray-300');
$('tbody td').addClass('py-3 px-5 text-sm text-gray-800');
}
});
This JavaScript code initializes a DataTables instance on an HTML table with the ID #exampleTable
. It enhances the table with various features like responsiveness, server-side processing, AJAX data fetching, and custom styling.