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.

anderson_jkanderson_jk Posts: 6Questions: 1Answers: 0
edited September 1 in General

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>"+'&nbsp;&nbsp'+
  "<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);
?>

Edited by Colin - Syntax highlighting. Details on how to highlight code using markdown can be found in this guide.

Answers

  • colincolin Posts: 12,677Questions: 0Answers: 2,166

    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

  • anderson_jkanderson_jk Posts: 6Questions: 1Answers: 0

    A que se refiere con enlazar?

  • tangerinetangerine Posts: 3,119Questions: 26Answers: 365

    Post a url linking to your page.

  • anderson_jkanderson_jk Posts: 6Questions: 1Answers: 0
  • anderson_jkanderson_jk Posts: 6Questions: 1Answers: 0
  • anderson_jkanderson_jk Posts: 6Questions: 1Answers: 0

    no se si a esto se refieren pero es lo que pude hacer

  • xepoxepo Posts: 6Questions: 2Answers: 0
    edited September 1

    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

  • colincolin Posts: 12,677Questions: 0Answers: 2,166

    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

  • anderson_jkanderson_jk Posts: 6Questions: 1Answers: 0

    Ya lo resolví simplemente reemplace $data = array(); por $data['data'][ ] = null y ya

Sign In or Register to comment.