• Publicidad

Subrutinas JavaScript

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Subrutinas JavaScript

Notapor seafree » 2015-04-22 11:52 @536

Hola, estoy llamando una subrutina de JavaScript desde Perl y me manda el mensaje:

"Uncaught ReferenceError: funcion_javascript is not defined"

¿Conocerán el significado del mensaje?

Mil gracias.
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518

Publicidad

Re: Subrutinas JavaScript

Notapor explorer » 2015-04-22 13:02 @584

Pues no. Ni Google lo sabe.

¿Podemos saber cómo haces esa llamada?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Subrutinas JavaScript

Notapor seafree » 2015-04-22 13:36 @608

Cierto, ni Google lo sabe. Verás, mi código es:

#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use DBI;
use CGI::Session;
use CGI;
use CGI::Ajax;
use CGI qw(:standard);
use CGI::Carp qw 'fatalsToBrowser warningsToBrowser';

###---Declaración de variables---###
my ........
my ........
my ........
####---START JSCRIPT--=######
my $JSCRIPT=<<EOF;

function trae_componentes(evento,subtit) {
var t_evento;
t_evento= evento;
var sub;
sub= subtit;
new Ajax.Updater('listaComp', 'reg_sel_comp_upd.cgi?sust=' + sub + '&event=' + t_evento,{method:'get'});
}

function trae_tcomp(componente.value,subtit.value,tipo_evento.value)
{
//No llego hasta aqui por lo menos
alert("Hello! I am an alert box!!");
return;
}

EOF
;

print header();
print start_html(-title=>'PRODUCTO',-script=>$JSCRIPT);

print <<"FORMULARIO";
<head>
<script type='text/JavaScript' src='/prototype.js'></script>
....
....
<body>
<form name=frmConsulta method="post" target="_blank" action="ver_consulta.cgi">
...
<tr>
<td align=right>
<font size=2 color="#000000" face="arial">
<B>EVENTO:</B></font>
</td>
<td align=left>
<select id="event" name="tipo_evento" onChange="trae_componentes(this.value,subest.value)">
<option value='vacio'>-Seleccionar-</option>
<option value='MANTTO'>MANTTO</option>
<option value='FALLA'>FALLA</option>
<option value='TODOS'>TODOS</option>
</select>
</td>
</tr>
<tr>
<td>
<font face='arial' size='2'><b>COMPONENTE:</b></font>
<div id='listaComp' style='display: inline;'>
<SELECT name='componente' onChange='trae_tcomp(this.value,subtit.value,tipo_evento.value);'>
</div>
</td>
</tr>

FORMULARIO

Sé que te resulta un poco incomodo ver el código HTML, pero estoy actualizando el proceso con código un poco longevo. Más adelante emplearé objetos Perl. Ojalá me puedas apoyar, explorer, a mostrar el ALERT de JavaScript.

Gracias y saludos.
Última edición por explorer el 2015-04-22 18:37 @817, editado 1 vez en total
Razón: veras => Verás; codigo => código; Declaracion => Declaración; se => Sé; mas => Más; empleare => emplearé; ojala => Ojalá;
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518

Re: Subrutinas JavaScript

Notapor explorer » 2015-04-22 19:15 @844

Recuerda que puedes reeditar tus propios mensajes. Solo tienes que pulsar el botón EDITAR que aparece en la parte derecha arriba de cada uno de tus mensajes.

Recuerda también que es muy aconsejable que le pongas marcado de código a tu código. Solo tienes que seleccionar con el ratón o teclado, y pulsar el botón Perl (o bash, o HTML, JavaScript o demás) que aparece en la parte superior de la caja de edición, cuando estás publicando una respuesta. Así, es más fácil de leerlo.

Por lo que veo, mezclas CGI, CGI::Session y CGI::Ajax. Vaya lío.

No es que me guste ver código HTML dentro de código Perl. Es que, sencillamente, ya nadie lo hace.

Yo prestaría atención a las comillas que usas en los valores de los atributos de las marcas HTML. Quiero decir que:
  • en algunos casos no se lo pones: <form name=frmConsulta, lo cual no es lo aconsejado
  • en algunos casos usas comillas simples: <option value='vacio'>, lo cual tampoco es lo aconsejado
  • en otros casos usas comillas dobles, que sí es lo aconsejado
El mensaje de error no es de Perl, sino de JavaScript. Quiere decir que, en algún sitio del código se está haciendo referencia a funcion_javascript en un contexto donde no es visible. El caso es que ese nombre no aparece en el código que nos muestras, así que no sabemos qué es lo que está pasando.

Pero lo primero es comprobar que el código HTML+JavaScript que te genera el programa es el que quieres, y que no tiene errores. Usa el visor de código del navegador, para verlo. En Firefox, te coloreará en rojo todos los fallos que encuentre.
Deberás usar alguna herramienta desde el navegador para ver los mensajes de error del JavaScript, para saber qué pasa. Por ejemplo, con el Firefox, se puede instalar el complemento Firebug, que muestra una consola con todos los mensajes de error. De esa manera sabrás en qué línea se está produciendo el error.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Subrutinas JavaScript

Notapor seafree » 2015-04-23 08:53 @411

Gracias por tus valiosas recomendaciones, explorer, y también por tus apreciadas observaciones de las marcas HTML.

Y sí, por todo el lío que tengo dentro de la programación debo de estar perdiendo la visibilidad de la funcion_javascript.

Trabajaré en tus comentarios y resolveré todo los líos que traigo.

Muchas gracias.
Última edición por explorer el 2015-04-23 11:50 @535, editado 1 vez en total
Razón: si => sí;
seafree
Perlero nuevo
Perlero nuevo
 
Mensajes: 296
Registrado: 2012-08-10 11:26 @518


Volver a Web

¿Quién está conectado?

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