validar validacion quitar formularios formulario example ejemplos con como javascript jquery ajax datatables

javascript - validacion - tablas de datos: ¿cómo detectar el error cuando se usa la función ajax personalizada?



validar formulario html5 (1)

Después de probar algunos métodos diferentes, creo que su mejor opción será llamar a la función de callback con sus datos en caso de éxito y devolver la callback con datos vacíos si falla. Si hay un error, puede establecer el texto de la fila .dataTables_empty en el texto de su mensaje de error, por lo que se mostrará en la tabla. Así es cómo funcionaría, y cómo se vería el código:

Nota importante : asegúrese de establecer el texto .dataTables_empty después de llamar a la devolución de llamada, ya que la devolución de llamada lo establecerá de nuevo (lo cual es realmente bueno porque no tiene que reiniciarlo en cada carga de datos)

$(''#example'').dataTable( { "columns": [ {"data": "col1"}, {"data": "col2"}, {"data": "col3"}, ], "ajax": function (data, callback, settings) { // simulate ajax call with successful data retrieval var myAjaxCall = new Promise(function (resolve, reject) { $(".dataTables_empty").text("Loading..."); setTimeout(function () { // `callback()` expects an object with a data property whose value is either // an array of arrays or an array of objects. Must be in this format // or you get errors. var ajaxData = {"data": [ {"col1": "1.1", "col2": "1.2", "col3": "1.3"}, {"col1": "2.1", "col2": "2.2", "col3": "2.3"}, {"col1": "3.1", "col2": "3.2", "col3": "3.3"} ]}; resolve(ajaxData); }, 1500); }); myAjaxCall.then(function resolveCallback(data) { // render data returned from ajax call callback(data); }, function rejectCallback(err) { callback({data: []}); $(".dataTables_empty").text(err); }); } }); $(''#example2'').dataTable( { "columns": [ {"data": "col1"}, {"data": "col2"}, {"data": "col3"}, ], "ajax": function (data, callback, settings) { // simulate unsuccessful ajax call var myAjaxCall2 = new Promise(function (resolve, reject) { $(".dataTables_empty").text("Loading..."); setTimeout(function () { // reject promise with error message reject("Something went terribly wrong!"); }, 1500); }); myAjaxCall2.then(function resolveCallback(data) { callback(data); }, function rejectCallback(err) { // render table with no results callback({data: []}); // set dataTables empty message text to error message $(".dataTables_empty").text(err); }); } });

<script src="https://code.jquery.com/jquery-3.1.0.js"></script> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css" /> <script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script> <h1>Success</h1> <table id="example"> <thead> <tr> <th>Col 1</th> <th>Col 2</th> <th>Col 3</th> </tr> </thead> <tbody> </tbody> </table> <h1>Error</h1> <table id="example2"> <thead> <tr> <th>Col 1</th> <th>Col 2</th> <th>Col 3</th> </tr> </thead> <tbody> </tbody> </table>

Al usar datatables , necesito usar una función ajax personalizada.

El ejemplo canónico que se encuentra aquí es el siguiente:

$(''#example'').dataTable( { "ajax": function (data, callback, settings) { //some async processing happening here //In the end call the callback. //However, this callback only accepts a success state // instead of the usual cb(err, resp) signature. //This raises the question how to let Datatables know there''s an error. const err = new Error("some contrived error"); //This doesn''t work, datatables doesn''t signal an actual error //which can be surfaced to the client. Instead it complains //the response doesn''t have a ''data''-object which it needs //to correctly create the table. In other words, datatables //thinks that the passed err-object is an actual correct response. //Question: so how to actually let datatables know there''s an actual error? callback(err); } } );

Sin embargo, no veo una forma de que las tablas de datos sepan que se produjo un error ajax.

¿Como hacer esto?