• Publicidad

Problemas al ejecutar un script en 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.

Problemas al ejecutar un script en Ajax

Notapor hugo11ab » 2008-01-15 19:09 @840

Hola que tal, aquí molestándolos de nuevo y solicitando su oportuna y eficiente ayuda. El problema que tengo es con respecto a un script de Perl con Ajax. Ya que soy nuevo en Ajax no sé cómo adaptar las instrucciones de Ajax a Perl. Este es el script que estoy haciendo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /usr/bin/perl -w

BEGIN
{
    # Declaramos la ruta de ubicacion del modulo 'comun'.
    @INC=(@INC,"/var/www/cgi-bin/comun");
}


use contratos_html; #aqui se encuentran los modulos
use CGI::Ajax;

use vars qw($table2 $JSCRIPT);


my $cgi = new CGI;
my $pjx = new CGI::Ajax( 'exported_func' => \&perl_func );

print $pjx->build_html( $cgi, \&Show_HTML2);

sub perl_func {
  my $input = shift;
  # do something with $input
  my $output = $input . " was the input!";
  return( $output );
}

sub Show_HTML2 {
my $table2 = <<EOHTML;

    $table2=new HTML::Table(-rows=>4,-cols=>1,-border=>0,-bgcolor=>0,-width=>"100%",-spacing=>2,-padding=>0);
    $table2->setCell(1,1, "Indrodusca cualquier cosa: &nbsp;");
    $table2->setCell(1,2, textfield(-name=>'vall',id=>'vall',-onKeyUp=>"exported_func( ['val1'], ['resultdiv']);"));
    $table2->setCell(2,1, "<br>");
    $table2->setCell(3,1, "<div id=\"resultdiv\">"."</div>");
    $table2->setCell(4,1,"<hr>".submit(-name=>'opc',-value=>'Continuar',-class=>'Bsbttn'));

    &js();
    print header;
    &print_cabeza2('');    # esta funcion se encuentra en el (pm)
    print $JSCRIPT;
    print start_multipart_form(-action=>$script_name,
                              -name=>'form',
                              -id  =>'form',
                              -onsubmit=>'return validacaja()'
                            );

EOHTML

return $table2;
}


sub print_cabeza2 {
 print start_html(-title=>'ENLACE',
                  -script=>$JSCRIPT,
                  -background=>'../../images/enlace/fondo.gif',
                  -BGCOLOR=>'#FFFFFF',
                  -style=> {-src=>'../../enlace/enlace.css'},
                  -link=>'#003366',
                  -vlink=>'#000000',
                  -method=>'post'
                 );
}

#valida que la caja de texto no este vacia
sub js {
$JSCRIPT=<<EOT;
<script language="JavaScript" type="text/javascript">
<!-- Hide script
//<![CDATA[

function validacaja() {
 if (form.vall.value eq '') {
  alert ("El campo de texto no puede ir vacio");
  return false ;
 }
 return true;
}
//]]> End script hiding -->
</script>
EOT

}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


El error que me aparece es este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
</script></head><body>No head/html tags, nowhere to insert.  Returning javascript anyway<br></body></html>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



He visto algunos ejemplos, y en todos meten directamente el código HTML, pero en mi caso utilizo el modulo HTM::Table y la rutina de print_cabeza. También por otra parte ocupo funciones de JavaScript. Espero y me ayuden a adaptarlo sin la necesidad de ocupar directamente el código HTML.
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016

Publicidad

Notapor creating021 » 2008-01-15 19:23 @849

Solo comento algo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
BEGIN
{
   # Declaramos la ruta de ubicacion del modulo 'comun'.
   push @INC, "/var/www/cgi-bin/comun";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Creo que es mejor hacer un push que definir todo el array.

¿En dónde llamas CGI y HTML::Table?
¿Sí usas CGI... para qué HTML::Table?
¿Sí se puede usar divs con HTML::Table? :shock:
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2008-01-15 20:48 @908

Quizás sea mejor usar use lib ... que modificar directamente @INC. Pero el resultado es el mismo.

HTML::Table parece permitir la creación de tablas de una forma más orientada a objetos mientras que la solución que da CGI es más 'funcional'.

El fallo que aparece me parece que se refiere a que Show_HTML2 solo genera las tablas, pero no generan el resto de las cabeceras.

Vemos que quizás print_cabeza2 no las genera. Quizás falta la línea use CGI qw[:standard]; para que Perl sepa qué es lo que hace start_html();

El uso de use strict; y use warnings; es primordial para pillar estos fallos.
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

Problemas al ejecutar un Script en Perl y Ajax

Notapor hugo11ab » 2008-01-15 22:43 @988

Les agradezco sus prontas respuestas.

En el módulo de contratos_html es ahí donde están declarados los módulos que ustedes mencionan.

Ya puse el use strict y el use warnings y me sigue saliendo el mismo error que mencioné al principio.

También accedí a los log y me manda este error.

[Tue Jan 15 21:39:19 2008] [error] [client 192.168.1.12] malformed header from script. Bad header=<html><head><script type="text: nuevo.pl

¿A qué se refieren con que puedo usar CGI en lugar de HTML::Table?

Les agradezco de nuevo sus respuestas y me puedan ayudar a resolver este problema.
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016

Notapor explorer » 2008-01-16 10:07 @463

Ya encontré el fallo.

El problema es que la definición de '<<EOHTML' está mal. Está englobando el código. Y ese código no se ejecuta en ninguna parte.
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

Problemas al ejecutar un script en Perl y Ajax

Notapor hugo11ab » 2008-01-16 11:22 @515

Gracias explorer por tus acertadas respuestas. Disculpa que te siga molestando pero ya le hice de varias formas y no puedo dejar bien este script. ¿Qué me sugieres que le quite o le ponga al script para que lo deje bien? De antemano muchas gracias.
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016

Notapor explorer » 2008-01-16 21:18 @929

En este foro hay algún ejemplo hecho con CGI::Ajax. Usa el sistema de búsqueda.

De tu script yo creo que le falta poco para terminar. Yo ahora mismo donde estoy no puedo probarlo. Lo siento. Quizás dentro de un par de días.

A ver si otra persona se anima a corregirlo o decir qué sobra o falta.
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 Intermedio

¿Quién está conectado?

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