promesa

 Entiendo, si el problema se presenta al intentar acceder a datos en la función abrirModalEditar, podría deberse a que la función se está ejecutando antes de que los datos se hayan cargado completamente. Para solucionarlo, puedes asegurarte de que la función abrirModalEditar espere a que los datos estén disponibles antes de intentar acceder a ellos.

Aquí hay una forma de hacerlo utilizando una promesa para asegurarnos de que abrirModalEditar se ejecute solo después de que los datos se hayan cargado correctamente:


<body> <div class="container"> <input type="hidden" name="carpeta" id="inputCarpeta" value="C-01/2015"> <table id="solicitudtabla" class="table"> <thead class="thead-dark"> <tr> <th>Id</th> <th>Carpeta</th> <th>Registro</th> <th>Solicitud</th> <th>Fecha de Registro</th> <th>Comentario</th> <th>Fecha de Vencimiento</th> <th>Estado</th> <th>Resolvio</th> <th>Fecha de Contesto</th> </tr> </thead> <tbody id="tablaBody"></tbody> </table> <!-- Modal para la edición --> <div class="modal fade" id="modalEditar" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Editar Registro</h5> <button type="button" class="close" data-dismiss="modal">&times;</button> </div> <div class="modal-body"> <form id="formularioEditar"> <input type="hidden" name="id" id="editId"> <div class="form-group"> <label for="editRegistro">Registro:</label> <input type="text" class="form-control" id="editRegistro" name="editRegistro"> </div> <div class="form-group"> <label for="editPDF">PDF:</label> <input type="text" class="form-control" id="editPDF" name="editPDF"> </div> <button type="submit" class="btn btn-primary">Guardar Cambios</button> </form> </div> </div> </div> </div> </div> <script> let datos = []; obtenerDatos(); function obtenerDatos() { const valorCarpeta = document.getElementById("inputCarpeta").value; fetch(`http://localhost/3-MVC-SITE-v5-SOLICITUDES/EJERCICIOS-COMPONENTES/componentes/0-solicitud_tabla.php?carpeta=${valorCarpeta}`) .then(res => res.json()) .then(data => { console.log(data.status); datos = data.result; pintarTabla(datos); }); } function pintarTabla(datos) { const tablaBody = document.getElementById('tablaBody'); let tablaHTML = ''; for (let dato of datos) { tablaHTML += ` <tr> <td>${dato.id}</td> <td>${dato.carpeta}</td> <td>${dato.registro || ''}</td> <td>${dato.solicitud || ''}</td> <td>${dato.f_registro || ''}</td> <td>${dato.comentario || ''}</td> <td>${dato.f_vence || ''}</td> <td> <button class="btn btn-primary" onclick="abrirModalEditar(${dato.id})">Editar</button> </td> <td>${dato.resolvio || ''}</td> <td>${dato.f_contesto || ''}</td> </tr> `; } tablaBody.innerHTML = tablaHTML; } function abrirModalEditar(id) { obtenerDatos().then(() => { const dato = datos.find(item => item.id === id); console.log(dato); const modalElement = document.getElementById("modalEditar"); const modal = new bootstrap.Modal(modalElement); modal.show(); document.getElementById("editId").value = dato.id; document.getElementById("editRegistro").value = dato.registro; document.getElementById("editPDF").value = dato.pdf; }); } </script> </body>

En este código, envolvemos la lógica en abrirModalEditar dentro de una promesa, que se resuelve después de que los datos se hayan cargado correctamente. Esto garantiza que los datos estén disponibles antes de intentar acceder a ellos.

Comentarios

Entradas populares de este blog

Normalizar valores

NORMALIZAR TABLA-audiencia_intervinientes

Listar audiencias