Vereis, llevo varios días con un problemilla que no consigo solucionar. Tengo unos formularios que se generan en función a los resultados que obtenga de la base de datos. Estamos hablando de peticiones de amistad, entonces, si hay 3 peticiones de amistad, aparecerán 3 formularios con las opciones de aceptar o rechazar.
Lo que he hecho, ha sido lo siguiente:
Código :
echo"<form class='solicitud' action='' method='POST'>"; echo "<br \> $fecha | $nombre_solicitante quiere ser tu amigo: <br>"; echo $mensaje."<br \>"; echo "<input type=submit class='aceptar' id='$id_solicitud' value='Aceptar')></input> | <input type=submit class='cancelar' id='$id_solicitud' value='Cancelar'></input>"; echo "</form>"; echo "<span id='resultado_$id_solicitud'></span>";
Bien, el id_solicitud es el que me va a indicar qué solicitud debo tratar. En el .js, tengo lo siguiente para la gestión en caso de que sea 'Aceptar':
Código :
var formulario = $(".solicitud"); formulario.submit(function(){ var id_solicitud = $(this).find("input.aceptar:submit").attr('id'); alert(id_solicitud); $.ajax({ async: true, type: "POST", dataType: "html", contentType: "application/x-www-form-urlencoded", url: "crear_amistad.php", data:'id_solicitud='+id_solicitud, beforeSend: function(data){ //$('#'+id_solicitud).fadeOut("slow"); $('#resultado_'+id_solicitud).html('Enviando'+data); }, success: function(data){ $('#resultado_'+id_solicitud).html('Corecto!'+data); }, timeout: 4000, error: function(data){ $('#resultado_'+id_solicitud).html('Error en el servidor'+data); } }); })
La cual me está leyendo constantemente los formularios enviados (cuando haga click sobre alguno de los botones) y me detecta que botón pulsé. Así, consigo almacenar el valor de la id_solicitud, el dato que quiero enviar mediante ajax al script: crear_amistad.php.
Éste script se basa en gestionar la nueva amistad en la base de datos. Como no me funcionaba como yo quería, he tratado de ir poniéndome "avisos" para mi mismo y detectar por dónde van los tiros. Bien, en el momento en el que ajax envia los datos al script, he puesto que en la Base de datos se me introduzca la id en una tabla auxiliar que he creado para el caso. Bien... pues a veces lo hace y a veces no, no entiendo el por qué de esta aleatorieadad...
Es decir, mi problema es que "no siempre" comunica con el script crear_amistad.php y cuando lo hace, lo hace a medias. No entiendo por qué a veces (cuando spameo los botones de aceptar, básicamente, jeje) me ejecuta el aviso y me inserta en mi tabla auxiliar el dato, y otras no.
A parte, cuando clickeo en los botones, me recarga la página (Tengo una tecnología similar en otras partes del proyecto y funciona perfectamente, y lógicamente al ser asíncrono no me recarga la página, pero claro, es en 1 formulario por página, no en varios y variables como en éste caso).
Si alguien me echa un cable... se lo agradezco mucho!
Un saludo.