• Publicidad

Evento OnClick - Ajax

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Evento OnClick - Ajax

Notapor lyna041 » 2008-01-23 14:49 @659

¡Hola!
Tengo un problemilla en la validación de un formulario html y no sé cómo solucionarlo. Normalmente las validaciones se realizan con JavaScript en el cliente, pero yo necesito verificar que un campo del formulario no esté en mi base de datos, por lo que tengo que usar CGI. Buscando información, he visto que CGI::Ajax me puede ayudar, pero me he quedado en un punto que no sé cómo seguir.

El problema está en que llamo a la función de validación con el evento onClick, si el formato de los campos es erróneo consigo que aparezca el mensaje de error, pero cuando los datos son válidos, no puedo redirigirme a la página que indico en <form action="http://url.ejemplo.com"> porque la función tiene un return false.
He probado a utilizar el evento onChange, pero así no me garantiza que al pulsar el botón submit, estén todos los datos correctos.
Este es el código que tengo (la parte de conexión con la base de datos no la he añadido todavía porque quiero asegurarme de que esto me funcione). Es el mismo código que está en el tutorial de Ajax, simplemente he modificado el formulario y el evento.

[syntax="perl"]#!/usr/bin/perl -w
use strict;
use CGI;
use lib qw(/usr/local/lib/perl5/site_perl/5.8.8/);
use CGI::Ajax;

my $cgi = new CGI;

my $PWD_CORRECTO = "perl";

#Creamos un nuevo objeto AJAX
# y asociamos una función
my $pjx = new CGI::Ajax( 'checar_pwd' => \&checar_pwd );

# Desplegamos el HTML
print $pjx->build_html( $cgi, \&mostrar_formulario);

sub checar_pwd{

#Recibimos los datos envíados
my $entrada = shift;

if($entrada eq ""){
return("Introduzca un nombre para el proyecto");
}
if($entrada eq $PWD_CORRECTO){
return("true");
}
else {
#return("El nombre del proyecto es incorrecto");
}
}

sub mostrar_formulario{

my $html = <<EOHTML;
<HTML>
<BODY>

<FORM action="http://pc-4-111.uc3m.es/cgi-bin/cargarBD.cgi"
enctype="multipart/form-data"
method="post">
Nombre del proyecto &nbsp;
<input type="text" name="nombre" id="nombre">
Cargar archivo txt &nbsp; &nbsp; &nbsp;
<input name="archivo" type="file">
<input type="radio" name="gestores" value="oracle" CHECKED>Oracle
<input type="radio" name="gestores" value="mysql">MySQL
<input value="confirmar" name="choice"
type="submit" onClick="checar_pwd( ['nombre'], ['resultado'] ); return false;"
</FORM>
<div id="resultado"></div>
<p>

</BODY>
</HTML>
EOHTML
return $html;

}[/synt]

¡Muchas gracias por todo!
lyna041
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2007-02-27 10:50 @493

Publicidad

Notapor explorer » 2008-01-23 17:33 @772

Vamos a ver... que a lo mejor nos estamos complicando en demasía...

¿Y no es más sencillo hacer un cgi normal y corriente, que reciba el formulario del cliente, decida si es correcta o no la información, y que en consecuencia devuelva una u otra respuesta?

Lo del Ajax esta bien para no tener que redibujar toda la página o que en los formularios, una de las entradas se deba consultar a la base de datos ahorrando redibujados de la página, pero tu formulario es muy pequeño... ¿por qué no hacerlo como se ha hecho siempre?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor lyna041 » 2008-01-24 04:58 @248

Sí, tienes razón. El hecho de haber probado con Ajax es que es la primera vez que me pongo con html, y en los ejemplos, era lo más parecido a una validación con Perl que había visto. Entonces sería algo así ¿no?

Si datos erróneos o en blanco
mostrarFormulario()
Si no
mostrarConfirmacion()


Muchas gracias por la ayuda.
lyna041
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2007-02-27 10:50 @493


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados

cron