• Publicidad

Continuar o detener CGI con Javascript

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Continuar o detener CGI con Javascript

Notapor newperlero » 2011-09-15 05:22 @265

Hola,

Estoy haciendo un CGI para unos usuarios, en el cual introducen una serie de datos.

Quiero que mi CGI, después de comprobar si son datos correctos o son "especiales", muestre un popup JavaScript para decir al usuario: "¿Desea continuar? [ SÍ / NO ]".

Si el usuario pulsa SÍ, mi cgi tiene que llamar a una funcion ( &plataformar ), y si pulsa NO, el cgi tendría que seguir con su ejecución normal.

Tengo el código JavaScript, pero no sé cómo hacer para que éste sea capaz de llamar a una función perl del cgi, o continuar con la ejecución normal.

Este es mi código JavaScript:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. print <<ENDHTML;
  2. <script type="text/javascript">
  3. <!--
  4. var pregunta = confirm ("Quieres continuar?")
  5. if (pregunta)
  6. alert ("Ok,invocando a plataformar.")
  7. else
  8. alert ("Ok, continuando ejecucion normal")
  9. // -->
  10. </script>
  11. ENDHTML
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

¿Es posible hacer esto?

¡Saludos!
newperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2011-07-15 06:38 @318

Publicidad

Re: Continuar o detener CGI con Javascript

Notapor explorer » 2011-09-15 05:59 @291

No, no se puede hacer eso. No se puede parar la ejecución de un cgi y esperar una acción por parte del usuario (bueno... sí que se podría, usando la técnica NPH, pero ya casi nadie la usa, existiendo soluciones más modernas y sencillas).

Hay que pensar que la ejecución de un cgi va de principio a fin. No se para "en medio". El servidor web, que es quien ha arrancado el proceso cgi, queda esperando a que éste le envíe toda la salida HTML (o la que sea), para enviarla hacia el navegador del usuario. Si el proceso no termina, entonces el servidor web queda esperando indefinidamente.

La solución es usar dos o más cgi separados. O un solo cgi pero que tome una alternativa u otra según el valor de los argumentos que recibe.

Por ejemplo, en tu caso, el formulario que se presenta a los usuarios dispara a un cgi, que comprueba si los datos son correctos.

Si lo son, prepara un trozo de código HTML (y javaScript) que sacará el popup en pantalla cuando se termine de redibujar la página, así como el código de plataformar().

Si no son correctos, en su lugar, el cgi creará un trozo de código HTML con el mensaje de error y, seguramente, el mismo trozo de código HTML con el formulario que debe rellenar correctamente el usuario. (Es un ejemplo de cgi que devuelve dos salidas distintas en función de los argumentos que recibe, unos buenos y otros no).

Efectos especiales más bonitos se pueden conseguir con CGI::Ajax, pero hay que saber un poco de teoría de Ajax, para sacarle todo el jugo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Continuar o detener CGI con Javascript

Notapor newperlero » 2011-09-15 06:56 @330

Puff, que follón. Voy a reestructurar código y voy a intentar prescindir de JavaScript, porque no lo puedo usar para lo que pretendía, entonces.

Gracias por la aclaración.

Saludos
newperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2011-07-15 06:38 @318

Re: Continuar o detener CGI con Javascript

Notapor explorer » 2011-09-15 07:06 @338

A ver... follón no es tanto... solo hay que entender qué hay que enviar, teniendo en cuenta que el JavaScript se va a ejecutar a partir del momento en que el navegador del usuario haya recibido toda la salida procedente del cgi.

En el hilo CGI con DIV oculto, verás un ejemplo mío de cómo definir el código que vamos a enviar con la salida CGI.

Pero no es la única manera. Podrías tener el código JavaScript en un fichero externo y luego, en la página HTML, referirte a él por medio de una marca <script language="javascript" src="...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron