"ajax": { "url": url, "type": "GET", "datatype": "json", "data": { id: id} //, //"success": function (data) { // if (!data.data) // ShowErrorMessage(data.message); //} }, "columns": [ { "data": "ID" }, { "data": "Name" }, { "data": "Time" } ], "columnDefs": [{ "targets": 2, "data": "Time", "render": function (data) { return (ToJavaScriptDate(data)); } }] });Arriba del código de muestra, que llenará una tabla de datos usando una llamada ajax GET. El problema aquí es que, a veces, devolveré un mensaje de error válido en lugar de los datos de la tabla de la respuesta ajax.
Entonces, siempre que haya datos en data.data, necesito completar la tabla y, si los datos no están allí, necesito completar data.message como un mensaje de error personalizado. Aquí, ambas llamadas son llamadas exitosas, pero depende si mostrar el contenido de la tabla o el mensaje de error.
Probé el atributo "éxito", pero no estoy seguro de cómo vincular manualmente las columnas cuando hay datos en data.data
La mejor manera sería usar la opción language.emptyTable .
Sin embargo, dado que desea utilizar el mensaje de la respuesta de Ajax, hay una forma ingeniosa de hacerlo.
var table = $('#example').DataTable({ ajax: { url: 'https://api.myjson.com/bins/if7vf', dataSrc: function(d){ if(d.data.length === 0){ var settings = $('#example').DataTable().settings()[0]; settings.oLanguage.sEmptyTable = d.message; } return d.data; } } });Vea este ejemplo para código y demostración.