Página 1 de 1

Subrutinas JavaScript

NotaPublicado: 2015-04-22 11:52 @536
por seafree
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.

Re: Subrutinas JavaScript

NotaPublicado: 2015-04-22 13:02 @584
por explorer
Pues no. Ni Google lo sabe.

¿Podemos saber cómo haces esa llamada?

Re: Subrutinas JavaScript

NotaPublicado: 2015-04-22 13:36 @608
por seafree
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.

Re: Subrutinas JavaScript

NotaPublicado: 2015-04-22 19:15 @844
por explorer
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.

Re: Subrutinas JavaScript

NotaPublicado: 2015-04-23 08:53 @411
por seafree
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.