PHP - Formulario While enviado por ajax

 
Vista:
Imágen de perfil de sergio
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario While enviado por ajax

Publicado por sergio (12 intervenciones) el 20/03/2021 10:52:32
Buenos días, os comparto una duda a ver si me podéis echar un cable :-)

Tengo este While, un formulario cargado por ajax, lo podéis ver en: https://vocabularioingles.gratis/basico
El problrema es que únicamente funciona el primer formulario del bucle, los restantes lo que hacen es refrescar la página, en lugar de cargar por ajax. Abajo os comparto el código!!

WHILE:
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
while ($line = mysqli_fetch_array($result)) {
    if (isset($_GET['id'])) {
        if ($id_registro == $line['id_clase']) {
 
 
            echo "<form id=\"formulario\" method=\"POST\">";
            echo '<tr>';
 
            echo '<td>';
            echo $line['espanol'];
            echo '</td>';
 
            echo '<td>';
            echo "<input class=\"col-lg\" type=\"text\" name=\"respuesta\" placeholder=\"In english\"autocomplete=\"off\"> ";
            echo '</td>';
 
            echo "<input type=\"hidden\" name=\"ingles\" value='" . $line['ingles'] . "'> ";
 
            echo '<td>';
            echo "<input name=\"comprobrar\" class=\"myButton\" type=\"submit\" value=\"Comprobar\">";
            echo '</td>';
 
            echo '<td>';
            echo "<input class=\"myButton_white\" type=\"submit\" name=\"solucion\"value=\"Respuesta\">";
            echo '</td>';
 
            echo '</tr>';
            echo "</form>";
        }
    }
}

js
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
$(document).ready(function () {
    $("#formulario").bind("submit",function(){
        // Capturamnos el boton de envío
        var comprobar = $("#comprobar");
        $.ajax({
            type: $(this).attr("method"),
            url: 'procesoAjax.php',
            data:$(this).serialize(),
            beforeSend: function(){
                /*
                * Esta función se ejecuta durante el envió de la petición al
                * servidor.
                * */
                // comprobar.text("Enviando"); Para button
                comprobar.val("Enviando"); // Para input de tipo button
                comprobar.attr("disabled","disabled");
            },
            complete:function(data){
                /*
                * Se ejecuta al termino de la petición
                * */
                comprobar.val("Comprobar");
                comprobar.removeAttr("disabled");
            },
            success: function(data){
                /*
                * Se ejecuta cuando termina la petición y esta ha sido
                * correcta
                * */
                $(".respuesta").html(data);
            },
            error: function(data){
                /*
                * Se ejecuta si la peticón ha sido erronea
                * */
                alert("Problemas al tratar de enviar el formulario");
            }
        });
        // Nos permite cancelar el envio del formulario
        return false;
    });
});

MENSAJE DE RESPUESTA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require_once "includes/config/db2.php";
require_once "includes/config/conexion.php";
$id_clase = $_GET['id'];
$sql    = "SELECT id, ingles, espanol FROM palabras";
$result = mysqli_query($con, $sql) or die('Consulta fallida: ' . mysqli_error());
 
if (isset($_POST['respuesta'])) {
    if ($line = mysqli_fetch_array($result)) {
        $var1 = $_POST['respuesta'];
        $var2 = $_POST['ingles'];
 
        if ($var1 == $var2) {
            echo "Bien, has acertado ;-D";
 
        } elseif (isset($_POST['solucion'])) {
            echo $var2 . "... petardo!";
 
        } else {
            echo "Tienes que estudiar más :-p";
 
        }
    }
}

Estoy dándole vueltas para que carguen todos los formularios del bucle pero sin éxito. Cualquier ayuda será bienvenida.

Muchas gracias!!
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 sergio
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario While enviado por ajax

Publicado por sergio (12 intervenciones) el 20/03/2021 11:15:13
Ya lo he solucionado... cambiando el id=formulario por clase=formulario, ya que he leído que los ID tienen que ser únicos.

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar