Hola amig@s.
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:
<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>
Luego, según he leído por la red, con la librería jquery se haría de la siguiente manera:
Código:
// 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;
}
});
})
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.
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!!