Como quitar mensaje DataTables warning: table id=tabla_curso_est - Invalid JSON response.
Como quitar mensaje DataTables warning: table id=tabla_curso_est - Invalid JSON response.
Buenas, soy nuevo con DataTables y no conozco mucho. Mi problema es que cuando no recibe datos el DataTables arroja DataTables warning: table id=tabla_curso_est - Invalid JSON response. Pero cuando recibe todo normal. El asunto es que cuando se hace un query y si el id es correcto y tiene datos se muestran pero sino tiene le envió un array vacío pero me sigue saliendo el error.
Adjunto DataTable
```
valID = $('#idhiddencurso').val()
var tabla_curso_est = $('#tabla_curso_est').DataTable( {
ajax: {
url: 'crud/crud_aula.php',
type: 'post',
dataType:'json',
data:{opcion:opcion,valID:valID},
dataSrc: '',
},
columns: [
{"data": "id"},
{"data": "estudiantes"},
{"data": "curso"},
{"data": "estado"},
{"defaultContent": "<button type='button' class='btn btn-success btn-sm editar_reporte' ><i class='fas fa-edit'></i></button>"+'  '+
"<button type='button' class='btn btn-danger btn-sm eliminar_reporte'><i class='fas fa-trash'></i> </button>"},
],
language:{
url:'datatables/spanish.json',
emptyTable: 'No data available in table'
},
dom: 'Bfrtip',
buttons:[
{
extend: 'copy',
text: '<i class="fas fa-copy"></i> ',
titleAttr: 'Copiar Todo',
},
{
extend: 'excelHtml5',
text: '<i class="fas fa-file-excel"></i> ',
titleAttr: 'Exportar a Excel',
className: 'btn btn-success'
},
{
extend: 'pdfHtml5',
text: '<i class="fas fa-file-pdf"></i> ',
titleAttr: 'Exportar a PDF',
className: 'btn btn-danger'
},
{
extend: 'print',
text: '<i class="fa fa-print"></i> ',
titleAttr: 'Imprimir',
className: 'btn btn-info'
},
]
} );
y este seria el PHP de la URL donde trae los datos
<?php
include_once '../bd/bd.php';
$valID = (isset($_POST["valID"]))?$_POST["valID"]:'';
$id1 = (isset($_POST["id1"]))?$_POST["id1"]:'';
$id2 = (isset($_POST["id2"]))?$_POST["id2"]:'';
$estado = (isset($_POST["estado"]))?$_POST["estado"]:'';
$opcion = (isset($_POST["opcion"]))?$_POST["opcion"]:'';
switch ($opcion) {
case 1:
$query = mysqli_query($conexion,"INSERT INTO cursos_estudiantes(id_estudiantes,id_cursos,estado) VALUES('$id1','$id2','$estado')");
$query = mysqli_query($conexion,"SELECT a.id,concat_ws(' ', e.nombres, e.apellidos) as estudiantes, concat_ws(' ',c.curso,c.seccion) as curso, a.estado FROM cursos_estudiantes as a
INNER JOIN cursos as c ON a.id_cursos=c.id_curso
INNER JOIN estudiantes as e ON a.id_estudiantes=e.id ORDER BY id DESC LIMIT 1");
while ($res = mysqli_fetch_assoc($query)) {
$data [] = $res;
}
break;
case 4:
$query = mysqli_query($conexion,"SELECT a.id,concat_ws(' ', e.nombres, e.apellidos) as estudiantes, concat_ws(' ',c.curso,c.seccion) as curso, a.estado FROM cursos_estudiantes as a
INNER JOIN cursos as c ON a.id_cursos=c.id_curso
INNER JOIN estudiantes as e ON a.id_estudiantes=e.id
WHERE a.id_cursos = $valID");
while ($res = mysqli_fetch_assoc($query)) {
if (!empty($res)) {
$data [] = $res;
}else {
$data = array();
}
}
break;
default:
# code...
break;
}
print json_encode($data,JSON_UNESCAPED_UNICODE);
mysqli_close($conexion);
<?php
>
```
?>
Edited by Colin - Syntax highlighting. Details on how to highlight code using markdown can be found in this guide.
Answers
An empty (
[]
) array shouldn't cause a problem as that is valid JSON. Can you link to your page please so we can take a look,Colin
A que se refiere con enlazar?
Post a url linking to your page.
https://pastebin.com/C4bmeR1F
https://pastebin.com/M5MxEx5m
no se si a esto se refieren pero es lo que pude hacer
valida la respuesta del server y el json antes de llamar a datatables, probablemente la respuesta que te da no es ni un array,
Te piden que pongas un link a tu pagina si es que la tienes publica o accesible
Yep, if the response isn't an array, then that would be invalid. Can you at least post the response from the server, that would help,
Colin
Ya lo resolví simplemente reemplace $data = array(); por $data['data'][ ] = null y ya