Cuando agrego la función de éxito, DataTable no llena automáticamente las filas en la tabla. Cuando elimino la función de éxito, todo está bien y la tabla de datos completa correctamente los datos en la tabla. Quiero capturar en respuesta usando el mensaje getAccessMessageWithStatus por estado, pero si lo hago como esta tabla de datos, no hay filas de relleno. ¿Como puedo hacer eso?
$('#' + datatableName).DataTable({ destroy: true, 'bProcessing': false, 'bServerSide': true, 'ajax': { 'url': URL, 'data': filters, beforeSend: function() { loader.popup('show'); }, success: function(response) { getAccessMessageWithStatus(response); }, complete: function() { $listContainer.show(); $containerChoiseColumnsFilter.show(); $(".containerRaportButtons").show(); getLastSearches(); getUses(); loader.popup('hide'); } }, 'sServerMethod': "POST", 'columns': columns, 'order': order, 'responsive': true });
Respuestas:
success: function(response) { getAccessMessageWithStatus(response); },
O:
"dataSrc": function(response) { if (response.status == false) { alert(response.msg); return []; } return response.aaData; },
Remover ";" después del nombre de la función en el código.
success: function (response) { getAccessMessageWithStatus(response) },
Hay un evento de DatatTable llamado 'xhr.dt' . Puedes usarlo de esa manera.
$('#' + datatableName).on('xhr.dt', function(e, settings, json, xhr){ getAccessMessageWithStatus(json); }).DataTable({ destroy: true, 'bProcessing': false, 'bServerSide': true, 'ajax': { 'url': URL, 'data': filters, beforeSend: function () { loader.popup('show'); }, complete: function () { $listContainer.show(); $containerChoiseColumnsFilter.show(); $(".containerRaportButtons").show(); getLastSearches(); getUses(); loader.popup('hide'); } } });
No debe usar el éxito del atributo ajax porque sobrescribirá la función de éxito de DataTable. Vea este fragmento de código de query.dataTables.js
"success": function (json) { var error = json.error || json.sError; if ( error ) { _fnLog( oSettings, 0, error ); } oSettings.json = json; callback( json ); }
Puede notar que tienen una devolución de llamada dentro de esta función. Esta devolución de llamada activa la función _fnCallbackFire y esta llamada al evento xhr.dt
Para obtener más información, vaya a esta página https://datatables.net/reference/event/xhr
Puedes usarlo de esta manera:
"complete": function (json, type) { //type return "success" or "parsererror" if (type == "parsererror") { alert("parsererror"); } ... }