Datatable в модальной форме внезапно перестает функционировать
У меня есть datatable, от DataTable pluggin из JQuery.
В модальной форме у меня есть одна datatable, которая отлично работала до одного дня.
Другие подробности заключаются в том, что генерируется html-код, как вы можете видеть на рисунке ниже:
https://ibb.co/qy6hcnS
У меня есть другой модальный вариант, как этот, но с другой таблицей счетов клиентов, и он отлично работает:
$(window).on('shown.bs.modal', function() { $('#resultadomodalCC_filter label input').focus(); }); $(document).ready(function() { $("a[name=agregar]").on('click',function(){ var id = $(this).attr("id"); var acta = $("input[name="+id+"]").val(); $.ajax({ type: "POST", url: "../gestionn/views/modules/cliente/procesodeuda.php", data: {"accion":"acreditar","idc":id,"monto":acta,"sesion":$("#sesion").val()}, error: function(){ alert("error petición ajax"); }, success: function(data){ window.location.reload(); } }); }); accion="listar"; $.ajax({ type: "POST", url: "../gestionn/views/modules/cliente/includes/editarCliente.php", data: { "accion": accion}, dataType: "json", error: function(){ alert("error petición ajax"); }, success: function(data){ t= $('#resultadomodalCC').DataTable({ data:data, columns: [ {data:"CUIT", title: "CUIT" }, {"data": "nombre", title: "NOMBRE " }, {"data": "deduda", title: "DEUDA" }, {"title": "ENTREGO" , render: function (data, type, row,meta) { return '<input type="text" name="'+row.idcliente+'" class="editableM"/>'; $(".editableM").maskMoney({prefix:'$', allowNegative: true, thousands:',', decimal:'.', affixesStay: false}); } }, {title: "PAGO", render: function (data, type, row,meta) { return "<a class='btn btn-primary' id="+row.idcliente+" name='agregar' >+</a>"; } } ], language:{ "sProcessing": "Procesando...", "sLengthMenu": "Mostrar _MENU_ registros", "sZeroRecords": "No se encontraron resultados", "sEmptyTable": "Ningún dato disponible en esta tabla", "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros", "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros", "sInfoFiltered": "(filtrado de un total de _MAX_ registros)", "sInfoPostFix": "", "sSearch": "Buscar:", "sUrl": "", "sInfoThousands": ",", "sLoadingRecords": "Cargando...", "oPaginate": { "sFirst": "Primero", "sLast": "Último", "sNext": "Siguiente", "sPrevious": "Anterior" }, "oAria": { "sSortAscending": ": Activar para ordenar la columna de manera ascendente", "sSortDescending": ": Activar para ordenar la columna de manera descendente" } }, responsive: true }); } }); });
в самом деле template.php файл, главный файл, который у меня есть:
<?php error_reporting(E_ALL); ini_set('display_errors', '1');?> <html> <head> <title>GESTION</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script src="exit.js"></script> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> <!-- jQuery CDN - Slim version (=without AJAX) --> <script src="includes/jquery-3.3.1.js"></script> <!-- Popper.JS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.13.4/jquery.mask.min.js"></script> <script src="views/jquery.maskMoney.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script> <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css"/> <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script> </head> <body> <div class="modal fade" id="modalstockprod" role="dialog"> <div class="modal-dialog modal-lg"style="width: 75%;"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">BUSQUEDA DE ARTICULO</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <div class="modal-body"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">CERRAR</button> </div> </div> </div> </div> <div class="modal fade" id="myModala" role="dialog"> <div class="modal-dialog modal-lg"style="width: 75%;"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">BUSQUEDA DE ARTICULO</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <div class="modal-body"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">CERRAR</button> </div> </div> </div> </div> <div class="modal fade" id="myModalCC" role="dialog"> <div class="modal-dialog modal-lg"style="width: 75%;"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">CUENTAS</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <div class="modal-bodyCC"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">CERRAR</button> </div> </div> </div> </div> <nav class = "navbar" role = "navigation"> <div class = "navbar-header" > <a class = "navbar-brand" href = "#">GESTION WEB</a> <button type="button" id="sidebarCollapse" class="navbar-btn">M</button> </div> <div> <ul class="nav navbar-top-links navbar-right"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"> <?php echo " " .$_SESSION ['username']; ?> </a> <ul class="dropdown-menu dropdown-user" > <li><a id="exit"> Cerrar Sesion</a> </li> </ul> <!-- /.dropdown-user --> <!-- /.dropdown --> </ul> </div> </nav> <div class="wrapper"> <!-- Sidebar --> <nav id="sidebar"> <div id="dismiss"> </div> <div class="sidebar-header"> <h3>MENU PRINCIPAL</h3> </div> <ul class="list-unstyled components"> <ul > <li><a data-toggle="modal" data-target="#myModala" href="" > <span id="art"> ARTICULO - F2</span> </a> </ul> <ul> <ul class="list-unstyled components"> <ul > <li><a data-toggle="modal" data-target="#miModals" href="" > <span id="serv"> SERVICIO - F7</span> </a> </ul> <ul> <ul class="list-unstyled components"> <ul > <li><a data-toggle="modal" data-target="#myModalCC" href="" > <span id="CC"> CUENTAS - F4</span> </a> </ul></ul></ul> <ul> <ul class="list-unstyled components"> <ul > <li><a data-toggle="modal" href="" > <span id="VENTA"> VENTA - F6</span> </a> </ul> </ul> <li class="dropdown"><a data-toggle="dropdown" class="dropdown-toggle"> <span>ABM</span></a> <ul class="dropdown-menu"> <li><a class="opcion" href="index.php?controller=cliente&action=index"> <span>Cliente</span> </a></li> <li><a href="index.php?controller=articulo&action=index"> <span>Articulo</span> </a> </li> <li ><a class="opcion" href="index.php?controller=proveedor&action=index"> <span>Proveedores</span></a></a></li> <!-- <li ><a href="index.php?controller=envase&action=todos">Envases</a></li> <li ><a href="index.php?controller=medida&action=index">Medidas</a></li> <li ><a href="index.php?controller=canilla&action=index">Canillas</a></li> --!> <li ><a class="opcion" href="index.php?controller=user&action=index"> <span>Usuarios</span></a></li> </ul> </li> </li> <li class="dropdown"><a data-toggle="dropdown" class="dropdown-toggle"> Estado de cajas</a> <ul class="dropdown-menu"> <li><a class="opcion" href="">Chequera</a></li> <li><a href="index.php?controller=caja&action=index">CAJA</a></li> <!-- <li><a class="opcion" href="index.php?controller=caja&action=gasto">Nuevo Gasto</a></li> <li><a class="opcion" href="index.php?controller=caja&action=abrir">Abrir caja</a></li> <li><a class="opcion" href="index.php?controller=caja&action=index">Cerrar caja</a></li> --> <li><a class="opcion" href="index.php?controller=cliente&action=cuenta">Cuenta Corriente</a></li> <li><a class="opcion" href="index.php?controller=caja&action=indexgrande">Caja Grande</a></li> <li><a class="opcion" href="">Posnet</a></li> </ul> </li> <li class="dropdown"><a data-toggle="dropdown" class="dropdown-toggle">Compra de stock</a> <ul class="dropdown-menu"> <li><a class="opcion" href="index.php?controller=stock&action=index">Productos</a></li> <li><a class="opcion" href="index.php?controller=stock&action=indexb">Barril</a></li> <li><a class="opcion" href="index.php?controller=stock&action=canilla">Cambio de canilla</a></li> </ul> </li> </ul> <input type="hidden" id="cajero" value="<?php if (isset($_SESSION["userid"])){ echo $_SESSION['userid']; }?>"/> <input type="hidden" id="sesion" value="<?php if (isset($_SESSION["idsesion"])){ echo $_SESSION['idsesion']; }?>"/> <input type="hidden" id="inicio" value="<?php if (isset($_SESSION["inicio"])){ echo $_SESSION['inicio']; }?>"/> </nav> <!-- Page Content --> <div id="content"> <?php if (isset($_GET['controller'])&&isset($_GET['action'])) { $controller=$_GET['controller']; $action=$_GET['action']; if (isset($_GET['id'])){ $id=$_GET['id']; call($controller,$action,$id); }else{ call($controller,$action,0); } }?> </div> <!-- Dark Overlay element --> <div class="overlay"></div> </div> </body> </html>
некоторые предполагают?
Что я уже пробовал:
Код модальной формы таков:
<pre>$(window).on('shown.bs.modal', function() { $('#resultadomodala_filter label input').focus(); $('#resultadomodala_filter input').on('keypress', function(event){ if (event.keyCode ===13){ $('.cantidad:first').focus(); } });}); $(document).ready(function() { $.ajax({ type: "POST", url: "../gestionn/views/modules/articulo/filtroP.php", data: { "tf": "todos"}, dataType: "json", error: function(){ alert("error petición ajax"); }, success: function(data){ t= $('#resultadomodala').DataTable({ data:data, columns: [ {"data":"codalfa", title: "COD.:" }, {"data": "nombre", title: "NOMBRE" }, {"data": "marca", title: "MARCA" }, {"title": "P/U" , render: function (data, type, row,meta) { return '<label class="editable">$ '+row.precio+'</label>'; } }, {"data": "detalle", title: "CAT.:" }, {"data": "subcategoria", title: "SUBCAT.:" }, { title:"CANT", data:null, render: function (data, type, row,meta) { return "<input type='text' style='width:50px;' name='"+row.idproducto+"' class='cantidad' value='1' tabindex='3' placeholder='cant'/>"; }}, { title:"AGREGAR", data:null, render: function (data, type, row,meta) { return "<a class='btn btn-primary' onclick='agregarProducto("+row.idproducto+");' name='agregar' >+</a>"; }} ], language:{ "sProcessing": "Procesando...", "sLengthMenu": "Mostrar _MENU_ registros", "sZeroRecords": "No se encontraron resultados", "sEmptyTable": "Ningún dato disponible en esta tabla", "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros", "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros", "sInfoFiltered": "(filtrado de un total de _MAX_ registros)", "sInfoPostFix": "", "sSearch": "Buscar:", "sUrl": "", "sInfoThousands": ",", "sLoadingRecords": "Cargando...", "oPaginate": { "sFirst": "Primero", "sLast": "Último", "sNext": "Siguiente", "sPrevious": "Anterior" }, "oAria": { "sSortAscending": ": Activar para ordenar la columna de manera ascendente", "sSortDescending": ": Activar para ordenar la columna de manera descendente" } }, responsive: true }); }, }); }); function agregarProducto(idproducto){ var cantidad=0; cantidad=$("input[name="+idproducto+"]").val(); id=idproducto; if (cantidad!==""){ var accion = "agregar"; $.ajax({ type: "POST", url: "/gestionn/views/modules/facta/procesoFactA.php", data: {"accion":accion,"id":id,"cant":cantidad}, error: function(){ alert("error petición ajax"); }, success:function(){ window.location.href="index.php?controller=facturaa&action=index"; }, }); } else{ alert("ingrese cantidad"); } }
Но я доказывал тот же самый код, передавая массив JSON вместо запроса ajax:
http://live.datatables.net/puxiyotu/1/edit
и как вы можете видеть, это работает отлично.
RickZeeland
Вы пробовали в другом браузере ?
Member 10177561
Очевидно.. Но это одно и то же
Richard Deeming
Проверьте консоль разработчика Вашего браузера на наличие ошибок.
Проверьте вкладку Сеть, чтобы увидеть, что делает ваш AJAX-запрос.
Если он работал, а потом остановился, значит, что-то изменилось. Либо вы изменили код, либо вы изменили базу данных, либо вы обновили браузер. Попытайтесь выяснить, что изменилось, когда код перестал работать, чтобы увидеть, дает ли это вам какие-либо подсказки.