654380491
hola@carlosdk.com
Login
[miniorange_social_login]

Login with your site account

Lost your password?

Carlos DK Carlos DK
  • Inicio
  • Kit digital
  • Universo Dk
  • Blog
  • Contacto
Back
  • Inicio
  • Kit digital
  • Universo Dk
  • Blog
  • Contacto
  • Home
  • Blog
  • Tutoriales formativos
  • Reiniciar Datatable – Cannot reinitialise DataTable.

Tutoriales formativos

04 May

Reiniciar Datatable – Cannot reinitialise DataTable.

  • By Carlos Dk
  • In Tutoriales formativos
  • 40 comments

Es posible que si estáis trabajando con llamadas AJAX utilizando una Datatable, es más que posible que necesitéis recargar información sin tener que recargar la página, en este caso, realizar una llamada AJAX sobre una datatable ya instanciada os dará error. Os explico a continuación como solucionar el error: Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3 

jquery
JQuery Datatable

El error que os aparece es por que ya está instanciada vuestra Datatable, por lo que no podréis volver a llamar la función que rellena tal Datatable, la solución es “destruirla”. Para ello utilizaremos la siguiente función:

[codesyntax lang=”javascript”]

$("#tablaRegistros").dataTable().fnDestroy();

[/codesyntax]

Teniendo en cuenta que nuestra Datatable se llama “tablaRegistros” y que ya está instanciada, solo nos faltaría antes de volverla a recargar lanzar la función fnDestroy(). Esta función elimina por completo la instancia anterior, por lo que podremos realizar la llamada de creación otra vez sin ningún tipo de problema.

No tiene mas 😉

Si tenéis cualquier consulta podéis realizarla en estos comentarios… incluso un “gracias” 😉

 

Tags:datatablejquery
  • Share:
Carlos Dk

You may also like

Crear categorías y configurar menú en WordPress en 4 min.

  • marzo 3, 2019
  • by Carlos Dk
  • in Tutoriales formativos
Crear categoría y menú WordPress Es indispensable en una nueva instalación de WordPress, crear las...
Instalar tema en WordPress en 2 pasos
febrero 23, 2019
Actualizar MySQL 5.1 a 5.6 en CentOS 6.9 con Plesk como panel
octubre 20, 2018
Recorrer todos los objetos de una capa o del DOM completo con JQuery
diciembre 22, 2014

    Comments

  1. eddy perez
    enero 2, 2016

    muy bueno me resolvio despues de estas buscando tres horas

    Responder
    • Carlos Dk
      enero 3, 2016

      Perfecto 🙂 cosa de las datatables 😀

      Responder
  2. pablinex
    abril 17, 2016

    gracias me sirvio de mucho,

    Responder
    • Carlos Dk
      abril 18, 2016

      Gracias por agradecer 😉

      Responder
  3. Carlos
    mayo 10, 2016

    Gracias, estuve varias horas buscando la solucion

    Responder
    • Carlos Dk
      mayo 11, 2016

      Nada 🙂

      Responder
  4. Benito Camelas
    mayo 23, 2016

    No me sirvió esa linea codigo, ya lo intente y nada sigue igual

    Responder
    • Carlos Dk
      mayo 24, 2016

      Prueba a pasársela desde los parámetros de llamada AJAX de la datatable.
      fnDestroy = true;

      Igualmente debería de funcionarte la anterior, pero por si la llamada no la haces en el lugar correcto, con este se destruye antes de volverse a cargar.

      Salud!

      Responder
  5. Yopmi
    mayo 28, 2018

    Muchas Gracias! Lo probare

    Responder
    • Carlos Dk
      junio 1, 2018

      No es nada difícil reiniciar la datatable 🙂

      Responder
  6. Josep
    septiembre 25, 2018

    Muchas gracias! Me ha ayudado mucho algo que estaba intentando solucionar desde hacía rato.

    Añado mi código para compartir, por si les sirve a otros:

    $.post(“RutaParaRecogerLaData.php”, SendData,
    function(data) {
    $(“#NombreDeLaTabla”).dataTable().fnDestroy(); //la destruimos
    $(‘#resultquery’).html(data); //recogemos el html que nos devuelve el archivo php
    $(‘#NombreDeLaTabla’).DataTable({ //la reiniciamos
    “order”: [[ 0, “desc” ]]
    });
    $(‘.dataTables_length’).addClass(‘bs-select’);
    });

    Responder
    • Carlos Dk
      septiembre 27, 2018

      Gracias por compartir con los demás 🙂

      Responder
  7. Luis Jimenez
    septiembre 27, 2018

    Carlos, realmente estoy muy agradecido. En pleno 2018 pasé casi 1 día entero buscando ésta maravillosa solución! Nuevamente muchas gracias!, saludos desde ciudad de Guatemala

    Responder
    • Carlos Dk
      septiembre 27, 2018

      Me alegra saber que el tiempo dedicado aún sirve 😉

      Salud!

      Responder
  8. Raul RR
    febrero 22, 2019

    En mi tabla tengo child row, cuando reinicializa la tabla, no muestra lo que la child row contiene, no manda error, y si lo debuggeo si lo muestra fraccion de milesimas pero se cierra solo, y creo que es por el destroy por que si lo quito si funciona, pero si quiero volver a filtrar la tabla me marca error precisamente por que no se reinicializa.

    Responder
    • Carlos Dk
      febrero 22, 2019

      Puede ser por el orden en el que estás llamando las funciones de la datatable.

      Responder
      • Raul RR
        febrero 22, 2019

        Gracias ya lo revise!

        Responder
        • Carlos Dk
          febrero 23, 2019

          Entiendo que ya lo solucionaste. ¿Qué te ocurría exactamente? Por si a alguien detrás le pasara lo mismo que ya tenga aquí la solución a tu caso 🙂
          Gracias por comentar!

          Responder
  9. JUan
    marzo 15, 2019

    hola Tengo el siguiente código que genera una Datatable dinámicamente (llamo al código desde un botón del formulario), en ella agrego un botón para extraer los datos de la tabla y enviarlos a un formulario que esta en la misma página.
    Cuando actualiza o ingreso por primera vez funciona perfectamente, pero cuando obtengo un datos de la Datatable y cierro… si vuelvo a llamar nuevamente la tabla me tira un error que me dice que la variable “dato” esta indefinida…. Estoy con esto varios dias… y no consigo solucionarlo.
    te paso el código a ver si me tiran una mano.
    Gracias!!!
    function buscarCliente(){
    $(“#buscarCliente”).on(“click”, function(){
    $(‘#modBuscaCliente’).modal({show: true});
    $(“#tBusqueda”).dataTable().fnDestroy();

    var table = $(‘#tBusqueda’).DataTable({
    “language”: {“url”: “/json/datatables/Spanish.json”},
    “lengthMenu”: [[5, 10], [5, 10]],
    “ajax”: {
    “method”: “get”,
    “url”: “/clientesSI/”,
    },
    “columns”: [
    {“data”: “nrocliente”},
    {“data”: “cliente”},
    {“data”: “domicilio”},
    {
    “targets”: -1,”data”: null,
    “defaultContent”: “”,
    “className”: “text-center”
    }
    ],
    “columnDefs”: [
    {“targets”: -1,”data”: null},
    {“bSortable”: “false”, “targets”: 3}, {“width”: “10%”, “targets”: [0]},
    {“title”: “N°”, “className”: “center”, “targets”: [0]}
    ]
    }) /* fin de ajax */

    })

    var obtenerDatosCliente = function (tbody, table) {
    $(tbody).on(“click”, “button.selec”, function () {
    var dato = table.row($(this).parents(“tr”)).data();

    var idCliente = $(“#idClienteSI”).val(dato.idcliente),
    cliente = $(“#txtCliente”).val(dato.cliente),
    nroCliente = $(“#txtNroCliente”).val(dato.nrocliente),
    domicilio = $(“#txtDireccion”).val(dato.direccion),
    });
    } // Fin ObtenerDatosCliente
    }

    Responder
    • Carlos Dk
      marzo 17, 2019

      Pues en principio no veo nada raro, lo único que se me ocurre es que pongas un punto de interrupción en la línea de
      var dato = table.row($(this).parents(“tr”)).data();
      A ver exactamente qué ocurre en ese punto, por que posiblemente el problema venga por la secuencia de llamadas, es decir, la primera vez si le de tiempo a ejecutarse como se espera, pero en la segunda vez, la destrucción tarde más y se obtenga la información de “dato”.

      Lo dicho, pon un punto de interrupción en la línea mencionada anteriormente para ver como se comporta la función sobre la datatable, devolución de datos, etc…

      Ya me dices!
      Salud!

      Responder
  10. Mauricio Astudillo
    marzo 28, 2019

    Muchas gracias, me ayudo mucho.

    Responder
    • Carlos Dk
      marzo 28, 2019

      Buenas Mauricio. Ma alegro que te sirva para tu datatable 🙂

      Gracias a ti por comentar!

      Responder
  11. karla
    mayo 8, 2019

    hola que tal, trato de hacer lo mismo para que los datos se actualicen al cerrar el modal pero me da un error TypeError: col is undefined

    este es mi codigo:

    $(document).ready(function() {
    $(‘#myModal7’).on(‘hidden.bs.modal’, function(){
    $(“#example1”).dataTable().fnDestroy();
    var table = $(‘#example1’).DataTable( {

    “ajax”: {
    “method” : “POST”,
    “url”: “action/datos.php”
    },
    “columns”: [
    { “data”: “nombre” },
    { “data”: “fecha”}
    ]
    });

    });
    });

    Responder
    • Carlos Dk
      mayo 8, 2019

      ¿En qué línea te da el error? Te está hablando del objeto “col” pero en realidad no lo veo en ese código 🙂

      Al parecer tal objeto no lo tienes definido “is undefined”

      Responder
  12. Miguel Ángel
    junio 18, 2019

    Solucionó mi problema , gracias

    Responder
    • Carlos Dk
      junio 18, 2019

      Nada 🙂

      Responder
  13. keivering
    septiembre 22, 2019

    Gracias por la traducción del problema — solución 100%

    Estaba actualizando unos status de user con fetch, y mi datatable me lanzaba ese error, no me mostraba la actualización hasta que refrescaba la pág.

    Responder
    • Carlos Dk
      septiembre 23, 2019

      Camino andado. Yo tenía un problema parecido al intentar refrescar al vuelo la tabla y por eso daba el error de Cannot Reinitialise Datatable. Nada, se reinicia la instancia y listo.

      Responder
  14. oliver
    septiembre 27, 2019

    me funciono de maravilla gracias

    Responder
    • Carlos Dk
      septiembre 27, 2019

      Claro que sí! Gracias por comentar 😉

      Responder
  15. Suset
    marzo 4, 2020

    Muchas gracias, después d muchos ejemplos vistos, me solucionó el tema

    Responder
    • Carlos Dk
      marzo 5, 2020

      Nada! Me alegro 😉

      Responder
  16. Jose Luna
    agosto 13, 2020

    Buen día.

    Muchas gracias por tu recomendación y vídeo, si me sirvió, solo tengo un detalle, para buscar debo de ingresar el texto a buscar y presionar enter, solo así me busca las coincidencias, mi código quedo así:

    $(document).ready(function(){

    var table = $(‘#example’).DataTable({
    orderCellsTop: true,
    fixedHeader: true
    });

    $(“#example”).dataTable().fnDestroy();

    //Creamos una fila en el head de la tabla y lo clonamos para cada columna
    $(‘#example thead tr’).clone(true).appendTo( ‘#example thead’ );

    $(‘#example thead tr:eq(1) th’).each( function (i) {
    var title = $(this).text(); //es el nombre de la columna
    $(this).html( ” );

    $( ‘input’, this ).on( ‘keyup change’, function () {
    if ( table.column(i).search() !== this.value ) {
    table
    .column(i)
    .search( this.value )
    .draw();
    }
    } );
    } );
    });

    Alguna recomendación para evitar dar enter??

    Responder
  17. Jose Luna
    agosto 13, 2020

    Ya logré filtrar por columnas con el codigo anterior pero cuando abro la pantalla me sale el mensaje:

    DataTables warning: table id=tablaUsuarios – Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3

    Una vez “acepto” me despliega la información y puedo filtrar

    Aplique $(“#tablaUsuarios”).dataTable().fnDestroy(); pero me elimina la paginación por paginas.

    Alguna sugerencia que me pudieran dar??

    Responder
    • Carlos Dk
      agosto 13, 2020

      Si trabajas con la paginación del lado del servidor, la llamada tiene que llevar los parámetros para la paginación y realizarlo desde el lado del servidor.
      Es decir, tienes que manejar toda la consulta con el backend y solo devolver la parte de registros que pertenecen a esa página.

      Responder
  18. Carlos E Velez Farak
    diciembre 7, 2020

    Por casualidad encontre una solucion a mi problema ya que yo trabajo desde el servidor las datatables usando django-datatbles-view que me parece una buena herramienta ya que se puede usar para tablas en bases de datos de mas de mil registros y es bastante rápida gracias por la solución que encontré en este foro

    Responder
    • Carlos Dk
      febrero 12, 2021

      Gracias por comentar, está precisamente por eso 🙂

      Responder
  19. clint
    julio 9, 2021

    muchas gracias compañero estuve casi dos dias con esto, y ni sabia como buscar el termino exacto , Gracias Genio

    Responder
  20. Stux_64
    septiembre 21, 2021

    GENIOOOO, DESDE HACE HORAS INTENTABA REINICIALIZAR EL DATATABLE CON LOS FILTROS NUEVOS QUE LE APLIQUÉ A LA BÚSQUEDA DE DATOS.
    GRACIAS MILES !!!

    Responder
    • Carlos Dk
      septiembre 21, 2021

      ¿Genio? Estuve pegándome de cabezazos igual que tú… por eso lo comparto 😉

      Nada!

      Responder

Leave A Reply Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Busca en la web

Recomiendo

Software ERP empresarial

Categorías

  • Miscelanea (129)
  • Tutoriales formativos (622)

Ponte en contacto

+34 654380491

hola@carlosdk.com

Torre del Mar (Málaga)

Enlaces rápidos

  • Universo Dk
  • Contacto
  • Blog

Soy social

  • Twitter
  • Linkedin
  • Youtube

Newsletters

Suscríbete para enterarte de lo último que estoy haciendo. No lo usaré para enviarte SPAM inútil 😉

Esta web la he diseñado con cariño en Andalucía por Carlos Dk