Este es mi código existente para la paginación aquí. Recibo un error porque la lista de roleList no está definida.
No sé cómo usar la respuesta ajax dentro de dataTable() . ¿Qué hice mal? Me llamó la atención esta parte durante los últimos 3 días, sin embargo, busqué una solución durante mucho tiempo, pero no pude encontrar una.
function empRoles() {debugger table = $('#mydata').DataTable({ "ajax": { "type": 'POST', "dataType": 'json', "url": '/Admin/getRolesList', "dataSrc": function (response) { var roleList = response; console.log(roleList) }, "data": { "json": JSON.stringify(roleList) } }, "columns": [{ "data": "sNo" }, { "data": "roleName", "className": "roleName" }, { "data": "roleName", "render": (data, type, row, meta) => ` <button class="btn edit btn-info" id="edit${row.sNo}"> <i class="fa fa-pencil"></i> Edit </button> <button class="btn update btn-success" id="update${row.sNo}"> <i class="fa fa-floppy-o"></i> Update </button> <button class="btn dlt btn-danger" data-toggle="modal" data-target="#confirm" id="delete${row.sNo}"> <i class="fa fa-trash-o"></i> Delete </button> ` , "sortable": false }], "createdRow": (row, data, dataIndex) => { $(row).attr("id", "row" + data.sNo); $('td:eq(1)', row).attr("id", "name" + data.sNo); } }); }Algún consejo por favor..
Si entiendo correctamente el problema, creo que la solución más simple sería simplemente inicializar la variable roleList fuera de las opciones.
function empRoles() { var roleList = []; // or whatever the initial data value should be var table = $('#mydata').DataTable({ // ... "dataSrc": function (response) { roleList = response; console.log(roleList) }, "data": { "json": JSON.stringify(roleList) } // ...La parte del código
"data": { "json": JSON.stringify(roleList) }se ejecuta antes
"dataSrc": function (response) { roleList = response; console.log(roleList) }Por lo tanto, la variable roleList no está disponible para ajax.data.
Puede validar esto poniendo puntos de interrupción en su navegador.
Aquí básicamente está tratando de acceder a la variable de entrada y devolverla al servidor. Lo mismo se puede lograr mediante la propia sección ajax personalizada utilizando funciones como se menciona en este enlace: