Saya menggunakan plugin jQuery datatables dan memuat data saya yang telah saya muat di DOM di bagian bawah halaman dan memulai plugin dengan cara ini:
var myData = [
{
"id": 1,
"first_name": "John",
"last_name": "Doe"
}
];
$('#table').dataTable({
data: myData
columns: [
{ data: 'id' },
{ data: 'first_name' },
{ data: 'last_name' }
]
});
Sekarang. setelah melakukan beberapa tindakan saya ingin mendapatkan data baru menggunakan ajax (tetapi bukan opsi ajax membangun datatables - jangan salah paham!) dan memperbarui tabel dengan data ini. Bagaimana saya bisa melakukannya menggunakan API tabel data? Dokumentasi sangat membingungkan dan saya tidak dapat menemukan solusinya. Bantuan apa pun akan sangat dihargai. Terima kasih.
Jawaban:
SOLUSI: (Perhatikan: solusi ini untuk datatables versi 1.10.4 (saat ini) bukan versi legacy).
KLARIFIKASI Sesuai dengan dokumentasi API (1.10.15), API dapat diakses dengan tiga cara:
Definisi modern DataTables (huruf besar unta):
var datatable = $( selector ).DataTable();
Definisi warisan DataTables (huruf kecil unta):
var datatable = $( selector ).dataTable().api();
Menggunakan
new
sintaks.var datatable = new $.fn.dataTable.Api( selector );
Kemudian muat data seperti ini:
Referensi API:
https://datatables.net/reference/api/clear ()
https://datatables.net/reference/api/rows.add ()
https://datatables.net/reference/api/draw ()
sumber
datatable.clear().rows.add(newDataArray).draw()
). Untuk komentar ini, saya menggunakan versi 1.10.18Kamu bisa memakai:
Jsfiddle
Memperbarui. Dan ya, dokumentasi saat ini tidak begitu bagus tetapi jika Anda baik-baik saja menggunakan versi yang lebih lama, Anda dapat merujuk dokumentasi lama .
sumber
Anda perlu menghancurkan instance tabel data lama dan kemudian menginisialisasi ulang tabel data
Pertama Periksa apakah ada contoh tabel data dengan menggunakan $ .fn.dataTable.isDataTable
jika ada maka hancurkan dan buat instance baru seperti ini
sumber
Berikut adalah solusi untuk data lama 1.9.4
sumber
Dalam kasus saya, saya tidak menggunakan api ajax bawaan untuk memberi makan Json ke tabel (ini karena beberapa pemformatan yang agak sulit untuk diterapkan di dalam render callback yang dapat diakses data itu).
Solusi saya adalah membuat variabel di ruang lingkup luar fungsi onload dan fungsi yang menangani penyegaran data (
var table = null
, misalnya).Kemudian saya membuat contoh tabel saya dalam metode on load
dan terakhir, dalam fungsi yang menangani penyegaran, saya memanggil metode clear () dan destruksi (), mengambil data ke dalam tabel html, dan membuat instantiate datatable, seperti:
Saya harap seseorang menemukan ini berguna!
sumber