• Publicidad

Pasar array desde un cgi a JavaScript

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

Pasar array desde un cgi a JavaScript

Notapor adriancasla » 2012-08-23 14:40 @652

¡Hola!

Necesito pasar un array desde un cgi, a una función JavaScript, que se encuentra dentro del cgi.

Intenté hacer esto en el cgi:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @coins;
  2. $coins[0] = "Quarter";
  3. $coins[1] = "Dime";
  4. $coins[2] = "Nickel";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


luego, en el html:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <script type="text/javascript">var list=new array(); list=\@coins;</script>
  2. <INPUT NAME='promo_code' TYPE='TEXT' maxlength=5 SIZE=10 onKeyup="contar(this,list);" VALUE=$issue-{'promo_code'} >
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y en la función:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. function contar(input,list) {
  2.       if(input.value.length >= 4) {
  3.             document.getElementById('websitename').style.display='block';
  4.             document.getElementById('websitename').innerHTML = input.value;
  5.             alert(list[1]);
  6.         }
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Con variables normales, generadas en el cgi, no hay problema, pero con array no puedo hacerlo.

¿Cómo lo podría solucionar?

Desde ya, ¡¡¡muchas gracias!!!
¡Saludos!
adriancasla
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-08-23 14:32 @647

Publicidad

Re: Pasar array desde un cgi a JavaScript

Notapor explorer » 2012-08-23 18:34 @815

Bienvenido a los foros de Perl en Español, adriancasla.

Podrías desplegar el contenido del array siguiendo la sintaxis del JavaScript:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $coin = join(',', @coins);            # todos los elementos de @coin, unidos con ','
  2. my $html = qq(<script type="text/javascript">var list=new array($coin);</script>);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

En este caso, el único problema sería si alguno de los elementos de @coin contuviese una coma, ya que es ese el separador que estamos usando para crear el array.
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

Re: Pasar array desde un cgi a JavaScript

Notapor adriancasla » 2012-08-24 09:02 @418

¡Hola! ¡Muchas gracias por la respuesta!

No había pensado lo de ponerle separadores... En el Firefox el error que me tiraba era relacionado a eso, pero no me di cuenta.

Probé la solucion que me pasaste, pero en la consola del Firebug me aparece el siguiente error:

array is not defined
<script type="text/javascript">var list=new array(Quarter,Dime,Nickel)</script>


¿Sabes cómo lo puedo solucionar?

Desde ya, ¡Muchas gracias!
adriancasla
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-08-23 14:32 @647

Re: Pasar array desde un cgi a JavaScript

Notapor explorer » 2012-08-24 12:06 @546

¡Ah, claro...!

Los literales que son cadenas de caracteres deben ir entrecomillados:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $coin = join(',', map { qq("$_") } @coins);         # todos los elementos de @coin,
  2.                                                        # unidos con ',' y entrecomillados
  3. my $html = qq(<script type="text/javascript">var list=new array($coin);</script>);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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

Re: Pasar array desde un cgi a JavaScript

Notapor adriancasla » 2012-08-24 12:59 @583

¡Gracias!

Probé lo que me pasaste, pero me sigue devolviendo el mismo error :(

Así tengo definido el html:

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<BODY onbeforeunload=\"return confirmExit()\">";
print "<HEAD>\n";
print <<"_JAVA_";
<script type="text/javascript"></script>
<SCRIPT LANGUAGE="JavaScript">
<!-- // Begin script
var wasSubmitted=false;
var noChanges=true;
var list=new array($coin);

function confirmExit() {
if (wasSubmitted || noChanges)
return
else
event.returnValue="Are you sure you wish to exit?"
}
...
.
acá sigue el código HTML. Solo se definen variables y funciones.
.
.
.
.
// --> End script
</SCRIPT>

_JAVA_

¿Puede que haya algún error aquí?

Desde ya, ¡muchas gracias!
adriancasla
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-08-23 14:32 @647

Re: Pasar array desde un cgi a JavaScript

Notapor explorer » 2012-08-24 14:55 @663

No entiendo qué hace

<script type="text/javascript"></script>

Para mí que no hace nada... y hay más errores, como marcas HTML fuera de sitio...

Yo usaría algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use warnings;                                # activar los avisos de cosas sospechosas
  3.  
  4. my @coins = qw( Quarter Dime Nickel);
  5. my $coins = join(',', map { qq("$_") } @coins);
  6.  
  7. print <<HTML;
  8. Content-type: text/html
  9.  
  10. <HTML>
  11. <HEAD>
  12. <TITLE>Coins</TITLE>
  13. <script type="text/javascript">
  14.     var wasSubmitted=false;
  15.     var noChanges=true;
  16.     var list=new array($coins);
  17.     function confirmExit() {
  18.         if (wasSubmitted || noChanges)
  19.             return;
  20.         else
  21.             event.returnValue="Are you sure you wish to exit?";
  22.     }
  23. </script>
  24. </HEAD>
  25. <BODY onbeforeunload="return confirmExit()">
  26. </BODY>
  27. </HTML>
  28. HTML
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y verificaría que el código HTML llega bien al navegador (prestar atención a que cualquier presencia de un '$' y '@' dentro del código HTML hace referencia a una variable Perl, y no a una JavaScript o a una dirección de correo electrónico).
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados

cron