• Publicidad

Select dependiente con CGI::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.

Select dependiente con CGI::Ajax

Notapor zozo666 » 2007-10-03 08:10 @382

Buenos días perleros, necesitaría una cosilla. Cómo hago para rellenar un select con una consulta que realizo mediante Ajax a la base de datos.

La cosa es así, tengo un select con todos los países, y necesitaría que al elegir cualquier país, o sea en el evento onChange del select, me comunique con el Ajax y me realice una consulta sobre el país que seleccione. Luego que con esa consulta me rellene un select.
Seria algo asi como un select dependiente, que según lo que elija en un select, me aparece en el otro, pero en este caso trabajándolo desde la base de datos.

¿Alguna idea? Muchas gracias por la ayuda :wink:
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Publicidad

Notapor explorer » 2007-10-03 08:38 @401

Por este foro hay algunos hilos al respecto. Usa el sistema de búsqueda. Busca por 'Ajax'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor zozo666 » 2007-10-03 09:23 @433

No verdaderamente no me sirvió nada de lo que había, lo estoy viendo demasiado complicado hacerlo en Perl, ya que me fijo como se hace en PHP y lo veo en 30 líneas hecho.

¿Por qué se complica tanto hacer esto en Perl, si solamente es rellenar un select desde una consulta?.

No hay una forma fácil de hacerlo, solamente utilizando Ajax. Ya me puse nervioso con esto, je disculpas.
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor explorer » 2007-10-03 09:40 @445

Con el módulo CGI de Perl, se puede hacer en 5 líneas:
  1. Abrir conexión a la base de datos
  2. Preparar, hacer la consulta y recuperar el resultado
  3. Cerrar la conexión
  4. Hacer el select, en HTML
  5. Imprimir el HTML
Esto lo conviertes en un CGI y lo llamas desde un CGI::Ajax.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor zozo666 » 2007-10-03 09:50 @451

Eso lo he hecho, pero tiene 2 problemas.

1º No funciona bien el tema de seleccionar y que se actualice el otro select

2º El select va impreso en el div, por lo tanto no puedo contar con los value que requiero para enviar el formulario con la información, ya que el Ajax lo imprime, pero no aparece en el código HTML.
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor explorer » 2007-10-03 10:06 @462

Podrías devolver los valores a un JavaScript de la página que se encargase de modificar el contenido del select dependiente.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor zozo666 » 2007-10-03 10:36 @483

Eso es lo que estoy probando ahora, pero como es eso de devolverlo a un javascript, osea como le paso los parametros al java script?? la funcion javascript ya me la dieron, lo que necesitaria saber es como le paso los parametros desde el ajax a ese javascript.

Probe usando HTML::template pero me tira la pagina entera dentro e la otra, osea necesitaria pasarle solamente los parameotros requeridos por la funcion javascript
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor explorer » 2007-10-03 10:51 @494

Hay módulos para pasar información en formato JSON. También podría ser en formato XML. Pero si conoces cómo son los datos los podrías pasar, por ejemplo, en un string, separando los valores con un '|'.

La cuestión es que, como tu eres el que pasa los valores, deberías entonces saber la forma de leerlos.

El problema es entender que la información ha de pasar 'serializada'. No vale con hacer un print del contenido, sino que debe estar formateada para que pueda pasar por el protocolo HTTP sin problemas. Como ese protocolo es fundamentalmente texto, una forma de hacerlo es justamente pasando esa información a texto. Luego, con el JavaScript, lo recuperamos y modificamos el DOM del documento.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor zozo666 » 2007-10-03 11:00 @500

Si yo lo que necesitaría es cómo pasarle los datos al Template, ya que dentro de éste se encuentra la función JavaScript que se encarga de todo.
Necesitaría únicamente la forma de pasar la información a el TMPL que no sea mediante un div. O sea en el Ajax sería una lógica así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#####
$resultado = $dbh->consulta;
#proceso el resultado
TMPL ->$resultado
#####
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


$resultado es un string que lo armo con la consulta desde el script, hasta ahí no hay problema, lo que necesitaría es cómo paso el string al template, así ya dentro del template le inserto la información en el llamado de la función JavaScript.

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
<script language="JavaScript">
                funcion_relleno ( 'selectcompania', relleno);
        }
</script>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Donde relleno es el string que procese desde Perl, entonces ¿cómo paso un string desde el script de Ajax al template?
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor kidd » 2007-10-03 11:21 @515

Veamos, lo que necesitas no es tan difícil, quizá un poco complejo porque necesitas de varias herramientas.

Para empezar te recomiendo que entres al siguiente tema del foro en donde se hablaba acerca de como llenar un select a base de la selección de otro select:
viewtopic.php?t=833.html

Después, si quieres saber como implementar Ajax con Perl, entonces te recomiendo el tutorial de Ajax que tenemos en el sitio:
http://perlenespanol.com/tutoriales/cgi ... _ajax.html

Para usar el HTML::Template también tenemos un tutorial:
http://perlenespanol.com/tutoriales/mod ... plate.html


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Siguiente

Volver a Intermedio

¿Quién está conectado?

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

cron