Estoy tratando de trabajar con Datatable JS de jQuery para mi proyecto desde este enlace.
Descargué la biblioteca completa de la misma fuente. Todos los ejemplos dados en el paquete parecen funcionar bien, pero cuando trato de incorporarlos en mi WebForms
, el CSS, JS no funcionan en absoluto.
Esto es lo que he hecho:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<table id="myTable" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
<tbody>
<!-- table body -->
</tbody>
</table>
</div>
<script src="js/jquery.dataTables.js" type="text/javascript"></script>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#myTable').DataTable();
});
</script>
</form>
</body>
</html>
Mi estructura de archivos para JS y CSS en mi solución tiene el siguiente aspecto:
He agregado todas las referencias JS y CSS necesarias como se muestra en el manual. Aún así, el renderizado no es el esperado. No hay CSS e incluso JS no funciona.
También en la consola obtengo los siguientes errores:
ReferenceError: jQuery is not defined
TypeError: $(...).DataTable is not a function
Todavía no he vinculado ningún dato dinámico aquí (como dentro de un repetidor más o menos) todavía no está funcionando.
¿Puede alguien guiarme en la dirección correcta para este problema?
fuente
Respuestas:
PORQUE
Puede haber varias razones para este error.
SOLUCIÓN
Incluir solo uno versión de la biblioteca jQuery versión 1.7 o más reciente antes jQuery DataTables.
Por ejemplo:
<script src="js/jquery.min.js" type="text/javascript"></script> <script src="js/jquery.dataTables.min.js" type="text/javascript"></script>
Consulte jQuery DataTables: errores comunes de la consola de JavaScript para obtener más información sobre este y otros errores comunes de la consola.
fuente
Esto funcionó para mí. Pero asegúrese de cargar jquery.js antes del archivo dataTable.js preferido. ¡Salud!
<script type="text/javascript" src="~/Scripts/jquery.js"></script> <script type="text/javascript" src="~/Scripts/data-table/jquery.dataTables.js"></script> <script>$(document).ready(function () { $.noConflict(); var table = $('# your selector').DataTable(); });</script>
fuente
Recibí este error porque descubrí que hice referencia a jQuery dos veces.
La primera vez: en la página maestra (
_Layout.cshtml
) en ASP.NET MVC, y luego nuevamente en una página actual, así que comenté la de la página maestra.Si está utilizando ASP.NET MVC, este fragmento podría ayudarlo
@*@Scripts.Render("~/bundles/jquery")*@//comment this line @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false)
y en la página actual agregué estas líneas
<script src="~/scripts/jquery-1.10.2.js"></script> <!-- #region datatables files --> <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" /> <script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script> <!-- #endregion -->
Espero que esto te ayude incluso si no usas ASP.NET MVC
fuente
si por alguna razón se cargan dos versiones de jQuery (lo cual no se recomienda), llamar
$.noConflict(true)
desde la segunda versión devolverá las variables jQuery de ámbito global a las de la primera versión.A veces podría ser un problema con la versión anterior (o no estable) de los archivos JQuery
Uso de la solución
$.noConflict();
<script src="js/jquery.js" type="text/javascript"></script> <script src="js/jquery.dataTables.js" type="text/javascript"></script> <script> $.noConflict(); jQuery( document ).ready(function( $ ) { $('#myTable').DataTable(); }); // Code that uses other library's $ can follow here. </script>
fuente
Aquí está el conjunto completo de JS y CSS necesario para que el complemento de tabla de exportación funcione perfectamente.
Espero que te ahorre tiempo
<!--Import jQuery before export.js--> <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script> <!--Data Table--> <script type="text/javascript" src=" https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> <script type="text/javascript" src=" https://cdn.datatables.net/buttons/1.2.4/js/dataTables.buttons.min.js"></script> <!--Export table buttons--> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script> <script type="text/javascript" src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/pdfmake.min.js" ></script> <script type="text/javascript" src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/vfs_fonts.js"></script> <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.4/js/buttons.html5.min.js"></script> <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.1/js/buttons.print.min.js"></script> <!--Export table button CSS--> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css"> <link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.2.4/css/buttons.dataTables.min.css">
javascript para agregar botones de exportación en la tabla con id =
tbl
$('#tbl').DataTable({ dom: 'Bfrtip', buttons: [ 'copy', 'csv', 'excel', 'pdf', 'print' ] });
Resultado: -
fuente
Puede haber dos razones para ese error:
primero
Estás cargando
jQuery.DataTables.js
antes,jquery.js
así que para eso: -Necesitas cargar
jQuery.js
antes de cargarjQuery.DataTables.js
Segundo
Está utilizando dos versiones de
jQuery.js
en la misma página, así que para eso: -Intente utilizar la versión superior y asegúrese de que ambos enlaces tengan la misma versión de
jQuery
fuente
Honestamente, esto tomó horas para solucionarlo. Finalmente solo una cosa funcionó una reconfirmación a la solución proporcionada por "Basheer AL-MOMANI". Que es solo poner declaración
@RenderSection("scripts", required: false)
dentro del
_Layout.cshtml
archivo después de todos los<script></script>
elementos y también comentando el script jquery en el mismo archivo. En segundo lugar, tuve que agregardentro de la llamada a la función jquery en otro archivo * .cshtml como:
$(document).readyfunction () { $.noConflict(); $("#example1").DataTable(); $('#example2').DataTable({ "paging": true, "lengthChange": false, "searching": false, "ordering": true, "info": true, "autoWidth": false, }); });
fuente
También encontré este error. Por alguna razón originalmente había codificado
var table = $('#myTable').DataTable({ "paging": false, "order": [[ 4, "asc" ]] });
Esto no arrojaría el error a veces y otras veces lo haría. Cambiando el código a
$('#myTable').DataTable({ "paging": false, "order": [[ 4, "asc" ]] });
El error parece haberse detenido
fuente
Sé que es tarde Buy puede ayudar a alguien
Esto también podría suceder si no agrega
$('#myTable').DataTable();
dentro deldocument.ready
Entonces en lugar de esto
$('#myTable').DataTable();
Prueba esto
$(document).ready(function() { $('#myTable').DataTable(); });
fuente
En mi caso la solución fue eliminar las cookies del navegador.
fuente
// you can get the Jquery's librairies online with adding those two rows in your page <script type="text/javascript" src=" https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css">
fuente
Al tener el mismo problema en Flask, ya tenía una plantilla que cargaba JQuery, Popper y Bootstrap. Estaba extendiendo esa plantilla a otra plantilla que estaba usando como base para cargar la página que tenía la tabla.
Por alguna razón, en Flask, aparentemente, los archivos de la plantilla externa se cargan antes que los archivos de las tablas de arriba en la jerarquía (los que está ampliando), por lo que JQuery se cargaba antes que los archivos de DataTables que causaban el problema.
Tuve que crear otra plantilla donde ejecuto todas mis importaciones de JS CDN en el mismo lugar, eso resolvió el problema.
fuente