JavaScript - Cargar datos en modal

 
Vista:
sin imagen de perfil

Cargar datos en modal

Publicado por Brandon (4 intervenciones) el 03/05/2024 20:34:38
Buena tarde
Tengo una tabla y con datos obtenidos desde mi base con php como lo muestro en el siguiente codigo
TABLA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<form class="row g-3" method="post" name="form-auto" id="myForm" action="">
            <div class="row g-5">
                <h2>Tickets en curso</h2>
                <div class="table-responsive small">
                    <table class="table table-striped table-sm">
                        <thead>
                            <tr>
                                <th scope="col">Estatus del ticket</th>
                                <th scope="col">Titulo del ticket</th>
                                <th scope="col">Numero de Ticket</th>
                                <th scope="col">Tipo de Ticket</th>
                                <th scope="col">Usuario Solicitante</th>
                                <th scope="col">Servicio</th>
                                <th scope="col">Indicador</th>
                                <th scope="col">Categoria</th>
                                <th scope="col" hidden></th>
                                <th scope="col"></th>
                                <th scope="col"</th>
                            </tr>
                        </thead>
                        <?php
                        $cau = "CAU-";
                        $i = 1;
                        while ($dataRow = mysqli_fetch_array($query)) { ?>
                            <tbody>
                                <tr>
                                    <td><?php echo $dataRow["Estatus"]; ?></td>
                                    <td><?php echo $dataRow["Usuario_Autorizado"]; ?></td>
                                    <td><?php echo $cau . $dataRow["Ticket"]; ?></td>
                                    <td><?php echo $dataRow["Tipo_Ticket"]; ?></td>
                                    <td><?php echo $dataRow["Usuario_Solicitante"]; ?></td>
                                    <td><?php echo $dataRow["Servicio"]; ?></td>
                                    <td><?php echo $dataRow["Indicador"]; ?></td>
                                    <td><?php echo $dataRow["Categoria"]; ?></td>
                                    <td hidden><input type="text" value="<?php echo $dataRow["Ticket"]; ?>" name="ticket"></td>
                                    <td><button type="button" class="btn btn-primary" onclick="DetallesModal()"> Detalles</button></td>
                                    <td><button type="button" class="btn btn-success" onclick="VistoBueno()"> Aplicar Vo.Bo</button></td>
                                </tr>
                            </tbody>
                        <?php } ?>
                    </table>
                </div>
            </div>
        </form>

MODAL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<div class="modal" id="myModal">
        <div class="modal-dialog modal-lg modal-dialog-scrollable" role="document">
            <div class="modal-content">
 
                <div class="modal-body">
                    <form class="row g-3 needs-validation" method="POST" action="" id="myFormDetalles">
                        <div class="modal-header">
                            <h4 class="fs-2 col-md-11">DATOS GENERALES DEL TICKET</h4>
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="CerrarModal()">
                                <span aria-hidden="true">×</span>
                            </button>
                        </div>
                        <div class="form-group col-md-9">
                            <label for="Codigo_modal" class="fs-4">Número del Ticket</label>
                            <input type="text" class="form-control fs-4" id="Ticket1" name="Ticket1" readonly="readonly">
                        </div>
 
                        <div class="form-group col-md-9">
                            <label for="Entidad" class="fs-5">Título del Ticket</label>
                            <input type="text" class="form-control fs-5" id="Titulo_del_Ticket" readonly="readonly">
                        </div>
 
                        <div class="form-group col-md-9">
                            <label for="Nombre" class="fs-5">Usuario Solicitante</label>
                            <input type="text" class="form-control fs-5" id="Usuario_Solicitante" readonly="readonly">
                        </div>
 
                        <div class="form-group col-md-9">
                            <label for="Departemento" class="fs-5">Tipo de Ticket</label>
                            <input type="text" class="form-control fs-5" id="Tipo_de_Ticket" name="Tipo_de_Ticket" readonly="readonly">
                        </div>
 </div>

Una vez que tengo mis datos en la tabla lo que quiero es cargar los datos en el modal correspondiente al boton (Detalles) del registro que estoy seleccionando en mi tabla, para eso realize lo siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function DetallesModal() {
    let form = document.getElementById("myForm");
    let formulario = new FormData(form);
    console.log(formulario);
    $.ajax({
        method: "POST",
        dataType: "JSON",
        url: "backTicket.php",
        cache: false,
        contentType: false,
        processData: false,
        data: formulario,
        success: function (data) {
            console.log(data);
            //if (data != null) {
            $('#myModal').modal('show');
            $('#Ticket1').val(data.Ticket);
            $('#Titulo_del_Ticket').val(data.Usuario_Autorizado);
            $('#Usuario_Solicitante').val(data.Usuario_Solicitante);
            $('#Tipo_de_Ticket').val(data.Tipo_Ticket);
            $('#Area_Operativa').val(data.Area_Operativa);
            $('#Unidad').val(data.Unidad);
            $('#Servicio').val(data.Servicio);
            $('#Indicador').val(data.Indicador);
            $('#Tiempo_Rectificacion').val(data.Tiempo_Rectificacion);
            $('#Categoria_Calidad').val(data.Categoria);
            $('#Descripcion_Indicador').val(data.Descripcion_Indicador);
            $('#Descripcion_Solicitud').val(data.Descripcion_Solicitud);
            $('#Notas').val(data.Nota);
            //}
        }
    });
}

Codigo de archivo backTicket.php

1
2
3
4
5
$ticket = $_POST['ticket'];
$consulta = "SELECT * FROM ticket WHERE Ticket = '$ticket'";
$data = mysqli_query($con, $consulta);
$datos = mysqli_fetch_array($data);
echo json_encode($datos);


Realmente si me carga los datos en el modal, el problema es no me muestra los datos del boton correspondiente al registro que seleccione, si no que para cualquiera que presione me carga los datos del ultimo registro que tenga.
Espero me entiendan y me puedan ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Cargar datos en modal

Publicado por Alejandro (535 intervenciones) el 13/05/2024 17:20:33
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Lo que estas haciendo es enviar el formulario completo y el elemento ticket se va sobrescribiendo por eso siempre se envía el último.

Solo necesitas enviar el ticket correspondiente, lo puedes obtener así:
1
let ticket = $(this).closest('tr').find('input[name="ticket"]').val();

y en el ajax solo envías el dato que requieres.
1
data:{'ticket':ticket},
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar