javascript
error-handling javascript jquery responsive-design ajax datatables responsive-table server-side-processing columns draw-callback
Published on October 24, 2024By DeveloperBreeze
Dynamic and Responsive DataTable with Server-Side Processing and Custom Styling
$('#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');
}
});
Explanation of the Code Snippet
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.
Key Features:
- Responsive Table:
responsive: true
makes the table adapt to different screen sizes.
- Server-Side Processing:
serverSide: true
enables server-side pagination, sorting, and filtering.processing: true
displays a processing indicator while fetching data.
- AJAX Configuration:
- The
ajax
object defines how data is fetched from the server. url
: Endpoint for fetching data.type
: HTTP method (GET).error
: Logs errors that occur during the AJAX request.dataSrc
: Processes the server's response. It logs the data and returns records for display.
- Column Definitions:
- The
columns
array specifies how data fields (e.g.,username
,points
) map to table columns.
- Custom Language:
language.emptyTable
: Custom message displayed when no data is available.
- Initialization Customization:
initComplete
: Adds custom classes to dropdowns and inputs in the DataTables UI for consistent styling.
- Draw Callback:
drawCallback
: Applies custom classes to various table elements (e.g., rows, headers, cells) after each table draw to enhance the appearance.
Comments
Please log in to leave a comment.