promesa II
Sí, es posible que el problema esté relacionado con la sincronización de la carga de datos. Utilizar una promesa podría ayudar a garantizar que los datos estén disponibles antes de intentar acceder a ellos. Aquí te muestro cómo podrías hacerlo con una promesa:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tabla y Modal</title> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <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="modalEditarLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="modalEditarLabel">Editar Registro</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <form id="formularioEditar"> <input type="hidden" name="id" id="editId"> <div class="mb-3"> <label for="editRegistro" class="form-label">Registro:</label> <input type="text" class="form-control" id="editRegistro" name="editRegistro"> </div> <div class="mb-3"> <label for="editPDF" class="form-label">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> <!-- Bootstrap JS y Popper.js (Requerido por Bootstrap) --> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.min.js"></script> <script> const tablaBody = document.getElementById('tablaBody'); let datos = []; obtenerDatos().then(() => { pintarTabla(datos); }).catch(error => { console.error('Error al obtener datos:', error); }); function obtenerDatos() { return new Promise((resolve, reject) => { 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; resolve(); }) .catch(error => { reject(error); }); }); } function pintarTabla(datos) { 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) { const dato = datos.find(item => item.id === id); console.log(dato); const modalElement = document.getElementById("modalEditar"); const modal = new bootstrap.Modal(modalElement); modal.show(); } </script> </body> </html>
pintarTabla.
Comentarios
Publicar un comentario