Setelah sekian lama tidak update blog dikarenakan kesibukan di dunia nyata, artikel kali ini saya akan menjelaskan bagaimana caranya mengatasi error yang muncul saat kita menggunakan laravel datatable.
Permasalahan yang saya alami biasanya adalah ketika kita membuka suatu halaman web yang menggunakan datatable, dan kemudian kita tidak mengaksesnya cukup lama namun tab halaman tersebut masih terbuka di browser kita. Maka yang terjadi adalah saat kita melakukan klik pada datatable (misal melakukan search, berpindah ke page selanjutnya, dll) akan muncul error yang menunjukkan bahwa session sudah expired.
Sebagai sesama programmer tentu hal ini dapat mudah dimengerti karena memang session perlu kita batasi untuk mencegah hal-hal yang tidak diingini. Misal ketika user lupa logout dan komputer user tersebut dipakai orang lain maka program masih tetap dapat terbuka jika kita tidak memberi batasan waktu pada session.
Namun, notifikasi session expired pada datatable ini akan dianggap sebagai suatu error jika yang mengalaminya adalah user yang bukan programmer. Walaupun kita sudah menjelaskan mengapa hal itu terjadi, biasanya tetap saja user melakukan protes kepada kita :).
Nah bagaimana cara mengatasi permasalah tersebut,
Caranya sangat mudah. Cukup menambahkan sepotong kode di bawah ini
$.fn.dataTable.ext.errMode = 'none';
$(document).ajaxError(function(event, jqxhr, settings, exception) {
if (jqxhr.status == 200) {
alert('Session expired. Please relogin');
window.location.reload(true);
} else
if (jqxhr.status == 500) {
alert('Program error. Please contact IT Dept');
}
});
Kode $.fn.dataTable.ext.errMode = 'none'; digunakan untuk mengubah mode error pada datatable menjadi none. Jadi ketika muncul error pada datatable, program tidak akan melakukan hal apapun.
Nah pada baris berikutnya baru kita melakukan pengecekan error yang terjadi dan bagaimana penangnannya. Pada contoh kode di atas, saya melakukan 2 pengecekan error, yaitu error 200 dan error 500.
Penanganan yang saya berikan saat muncul error 200 adalah dengan memunculkan alert Jika Session expired dan kemudian melakukan refresh pada halaman itu. Pada program yang saya buat biasanya, sudah terdapat pengecekan jika session habis maka program akan melakukan redirect ke halaman login saat mengakses halaman-halaman yang lain.
Sedangkan jika muncul error 500, saya hanya menampilkan pesan untuk menghubungi departemen IT dikarenakan error 500 ini biasanya muncul jika terjadi kesalahan pada koding yang kita buat (biasanya ya bukan selalu).
Nah penanganan error ini dapat anda buat sesuai dengan kebutuhan anda. Saya hanya memberikan contoh bagaimana cara membaca error dan contoh penanganan sederhananya saja. Silahkan modifikasi sendiri jenis error apa saja yang ingin anda tangani dan bagaimana cara penanganan yang anda butuhkan untuk setiap error yang anda lakukan pengecekan.
Seperti biasanya, silahkan gunakan kolom komentar di bawah jika anda mengalamu kesulitan mengaplikasikan program di atas. Segala pertanyaan mengenai artikel ini dapat anda tuliskan pada kolom komentar dan biasanya saya akan menjawab setiap pertanyaan yang ada. Terima kasih
Tutorial Laravel 6 - Error Handling pada Datatable
Reviewed by Donny Winarto
on
February 23, 2020
Rating:
Do you understand there is a 12 word sentence you can speak to your partner... that will induce intense feelings of love and instinctual attraction for you buried within his heart?
ReplyDeleteBecause deep inside these 12 words is a "secret signal" that fuels a man's impulse to love, worship and protect you with all his heart...
12 Words Will Fuel A Man's Love Response
This impulse is so built-in to a man's mind that it will make him try harder than before to make your relationship the best part of both of your lives.
Matter of fact, triggering this all-powerful impulse is absolutely binding to achieving the best possible relationship with your man that the moment you send your man one of the "Secret Signals"...
...You'll soon notice him open his heart and soul for you in a way he never expressed before and he'll recognize you as the one and only woman in the galaxy who has ever truly interested him.