Tengo un problema al procesar un formulario gestionado con jquery para enviar comentarios sin recargar la página.
Los comentarios se duplican a partir del segundo comentario seguido, es decir:
publicación 1
Comentario1:Este es mi primer comentario
Comentario2: Este es mi segundo comentario
Comentario3: Este es mi segundo comentario
Comentario4: Este es mi tercer comentario
Comentario4: Este es mi tercer comentario
Comentario4: Este es mi tercer comentario
Y asi sucesivamente. Que conste que no hay ningún contador ni nada.
Los comentarios no se duplican si cada vez que envío uno recargo la página, entonces supongo que debe ser del jquery.
Una parte del código:
Código:
Si revisáis el código os daréis cuenta que he hecho un alert del formulario con el que envío los comentarios. cuando hago clic en enviar y el comentario aparece duplicado n veces también aparecerán n alerts.<div id="result<?php echo $id; ?>" class="recarga"> <?php $consulta_comentarios=mysql_query("SELECT comentarios.*, usuarios.nick FROM comentarios, usuarios WHERE comentarios.id_publicacion=".$id." and comentarios.id_usuario=usuarios.id ORDER BY id"); while($campo_comentario=mysql_fetch_array($consulta_comentarios)){ $id_publicacion=$campo_comertario['id_publicacion']; $comentario=$campo_comentario['texto']; $id_comentario=$campo_comentario['id']; $nick=$campo_comentario['nick']; ?> <div id="comentarios<?php echo $id_comentario; ?>" style="background-color:#d5dbdf; width:590px; margin-left:0px; margin-top:5px;"> <?php echo "<strong>".$nick."</strong>: ".$comentario; ?> </div> <?php } ?> </div> </td> </tr> <form id="formulario_comentario<?php echo $id; ?>"> <tr> <td colspan="2"><textarea name="gola" id="<?php echo $id; ?>" cols="70" rows="2" onfocus="detectarId(<?php echo $id; ?>)"></textarea> <input type="text" id="oculto<?php echo $id; ?>" name="id_publi" style="display:none" /> <label> <input type="submit" value="Enviar" id="<?php echo $id; ?>" class="submit2" /> </label></td> </tr> </form> <tr> <td colspan="2"> <?php ?> </td> </tr> <tr> <td colspan="2"><div align="right"> </div> <div align="right"></div> <div align="right"></div></td> </tr> </table> <?php }//cierra las publicaciones $id_publi=$_GET['id_publi']; if(isset($_GET['gola']) && $id_publi==$id){ $texto_comentario=$_GET['gola']; mysql_query("INSERT INTO comentarios (texto, id_usuario, id_publicacion) VALUES ('".$texto_comentario."',".$_SESSION['id_usuario'].",".$id.")"); //mysql_query("INSERT INTO publicaciones (titulo, contenido, id_usuario, id_categoria) VALUES ('".$titulo."', '".$contenido."',".$idusuario.",".$idcategoria.")"); }else{ $texto_comentario="ERROR"; } }//todo lo de arriba es visible para el usuario logueado if($_SESSION['login']==false){ echo "<h4 align='center'><br /><br />Para visualizar el contenido es necesario loguearse</h4><br /><br /><br /><br /><br />"; } ?> <script> $(".submit2").click ( function() { variableSubmit = $(this).attr('id'); function recargarcoments() { $("#result"+ variableSubmit).load("comentarios.php?id_publicacion=" + variableSubmit); } setInterval (recargarcoments, 2500); // Interceptamos el evento submit $("#formulario_comentario"+variableSubmit).submit ( function() { alert("#formulario_comentario"+variableSubmit); // Enviamos el formulario usando AJAX $.ajax ( { type: 'GET', url: $(this).attr('action'), data: $(this).serialize(), // Mostramos un mensaje con la respuesta de PHP success: function(data) { } } ) return false; } ); } ) </script>
Le preguntado a un colega que tiene alguna noción de jquery y no encuentra el problema, a ver si podéis echarme un mano please.
Saludos.