Estoy tratando de enviar un formulario php sin que se recargue la página en la que me encuentro, para luego insertar los datos en la base de datos y mostrar el nuevo registro.
Me explico, es un módulo de comentar noticias y lo que quiero conseguir es que cada vez que un usuario quiera hacer un comentario, éste sea registrado e inmediatamente se muestre donde los demás.
Para ello, en la página incial muestro mi formulario de la siguiente manera:
Código:
Luego, según he leído por la red, con la librería jquery se haría de la siguiente manera:<form name='fcomenta' id='fcomenta' action='' method='post'> <p>Su nombre:</p> <p><input name='nombre' type='text' id='autor' value='Anónimo' maxlength='20' onfocus='javascript:nombre(this.value);' onblur='javascript:nombre(this.value);'/></p> <p>Su email:</p> <p><input name='email' type='text' id='autor' value='' maxlength='50'/></p> <p>Texto de su comentario:</p> <p><textarea name='comentario' cols='40' rows='5'></textarea></p> <input name='idnoticia' type='hidden' value=".$row_noticia['ID']." /> <input name='ipusuario' type='hidden' value=".$ip." /> <p><input name='env_com' type='submit' value='Enviar' id='env_com'/></p> </form>
Código:
Bueno, la verdad es que la función que encontré la he adaptado a mis necesidades. Pero de todas formas no me intercepta el submit y la página se recarga igualmente no haciendo absolutamente nada.// Interceptamos el evento submit $('#form, #fat, #fcomenta').submit(function() { alert('intercerpto el submit'); // Enviamos el formulario usando AJAX var noticia = document.fcomenta.idnoticia.value; var usuario = document.fcomenta.idusuario.value; var nombre = document.fcomenta.nombre.value; var email = document.fcomenta.email.value; var comentario = document.fcomenta.comentario.value; $.ajax({ type: "GET", url: "funciones.php", data: "action=comentar&cod_usuario="+cod_usuario+"&cod_noticia="+cod_noticia+"&nombre="+nombre+"&email="+email+"&comentario="+comentario, success: function(msg){ document.getElementById("txtprueba").style.visibility = 'visible'; document.getElementById("txtprueba").innerHTML = msg; }, error: function(xho){ document.getElementById("txtprueba").style.visibility = 'visible'; document.getElementById("txtprueba").innerHTML = "Error:"+xho.responseText; } }); })
Alguien puede guiarme sobre cómo podría solucionar esto?? Qué librería se adptaría más a lo que io quiero hacer y cómo debería utilizarla para conseguirlo??
Muchas gracias!!