• Publicidad

CGI, javascript y check de formulario

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

CGI, javascript y check de formulario

Notapor newperlero » 2012-01-16 07:30 @354

¡Hola!

Antes de nada, aviso que no tengo demasiada experiencia en desarrollo web...

Tengo un CGI con 2 textareas, en una de ellas, el usuario escribe unos datos, y en la otra hay unos datos que escribe el propio cgi.

Necesito que cuando hagan clic en el botón de submit, se compruebe que todas y cada una de las líneas que ha escrito el usuario en el textarea 1, existan en el textarea 2.

Tengo un código JavaScript que hace la comprobación, pero no me funciona, me da un error: "Constante de cadena sin determinar", y tampoco sé cómo puedo hacer la depuración de este error...

El código JavaScript que estoy usando es este: http://jsfiddle.net/2EFTZ/2/

¿Cómo puedo meter este código al CGI? Está entre <head> y </head>, pero no funciona. No es capaz de mostrarme los campos del textarea 1, que no existen en el 2.

La idea sería que hasta que no se corrijan los campos del textarea 1 que no están en el 2, no deje hacer el submit.

La pregunta es, ¿esto lo puedo hacer con CGI? Creía que sí, pero no consigo hacerlo funcionar...

Una porción de mi código es esto (es posible que haya algo que no tenga mucho sentido, es código recortado, pero espero que se entienda la esencia de lo que quiero hacer):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use CGI qw/:standard/;
  2. use CGI::Carp qw(fatalsToBrowser);
  3.  
  4. my $CAMPO1 = $cgi->param("CAMPO1");
  5. my $CAMPO2 = $cgi->param("CAMPO2");
  6. my $q  = new CGI;
  7. my $cgi = new CGI;
  8. print $q->header;
  9.  
  10.  
  11. print <<ENDHTML;
  12. <html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  13.  
  14. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  15. <style type="text/css">
  16. <!--
  17. body {
  18.         background-color: #BFBFBF;
  19.  
  20. }
  21. -->
  22. </style>
  23. <head>
  24. <title>Pruebas</title>
  25.  
  26. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  27. <link href="../pantilla.css" rel="stylesheet" type="text/css">
  28. <script language="javascript" type="text/javascript">
  29.  
  30. function ValidateForm(){
  31.     var t1 = document.getElementById("CAMPO1").value.split("\n"),
  32.         t2 = document.getElementById("CAMPO2").value.split("\n"),
  33.         notIn2 = [];
  34.     for(var i = 0; i < t1.length; i++) {
  35.         if(t2.indexOf(t1[i]) == -1) {
  36.             notIn2.push(t1[i]);  
  37.         }
  38.     }
  39.     alert(notIn2);
  40.         return false;
  41. };
  42. </script>
  43.  
  44. </head>
  45. <body>
  46. <table width="661" height="259" border="0">
  47.   <tr>
  48.     <td>
  49. <p>&nbsp;</p>
  50. <LABEL class=hh3><p><strong><center>Textareas</center></strong></p></LABEL>
  51. <table border="0" summary="tabla" align="center">
  52. <tr><td><form onSubmit="return validateForm()" name="input" action="/cgi-bin/PRUEBAS.pl" method="post">  
  53. <LABEL class=h4>Autorizar:</LABEL></td>
  54. <td><LABEL class=h4>Lista_accesos:</LABEL></td>
  55. <tr><td width="83" rowspan="1"><textarea name="CAMPO1" cols="10" rows="10" class="W" id="CAMPO1" tabindex="1"></textarea></td>
  56. <td width="107" rowspan="1"><textarea name="CAMPO2" cols="10" rows="10" class="W" id="CAMPO2" tabindex="1">
  57. ENDHTML
  58. foreach my $num(@campos){
  59.         chomp($num);
  60.         print "$num\n";
  61. }
  62. print <<ENDHTML;
  63. </textarea></td>
  64. <td colspan="15"><center><input name="Procesar" id="Boton" value="Procesar" type="Submit"> </center></form></tr></td></table>
  65. ENDHTML
  66.  
  67.  
  68. if ($CAMPO1 eq ""){
  69.         print qq{
  70.                 </table>
  71.                 </td>
  72.                 </tr>
  73.                 </table>
  74.                 </body>
  75.                 </html>
  76.         };
  77. }
  78. else{
  79.  
  80.         continua;
  81. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
newperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2011-07-15 06:38 @318

Publicidad

Re: CGI, javascript y check de formulario

Notapor explorer » 2012-01-16 07:43 @363

En la línea 80, has puesto "continua;", cuando quizás deberías haber puesto "continue;".

Si tienes activado

use strict;
use warnings;
use diagnostics;


al principio del fichero, será Perl el que te diga dónde encuentra los errores. Como tienes puesto el CGI::Carp, esos errores saldrán en la página web, además de en los registros de actividad del servidor web.
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: CGI, javascript y check de formulario

Notapor newperlero » 2012-01-16 08:12 @383

continua está bien, es la llamada a la sub() que continúa el proceso.

Ni poniendo strict, diagnostics o warnings soy capaz de ver ningún error en el navegador :S
newperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2011-07-15 06:38 @318

Re: CGI, javascript y check de formulario

Notapor explorer » 2012-01-16 10:10 @465

Pero si nos has dicho que te sale un error... "Constante de cadena sin determinar".

¿Dónde sale? ¿En la consola de errores JavaScript del Firefox? Entonces puede ser un error de JavaScript. Allí te dirá en qué línea ha detectado el error, otro dato importante que no sabemos.
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: CGI, javascript y check de formulario

Notapor newperlero » 2012-01-17 03:59 @207

Sí, el error lo muestra el navegador (Iexplorer) en su consola de errores.

Estaba haciendo las pruebas con Internet explorer, que es el navegador en el que se va a utilizar la aplicación y...

Me diste una idea. Probar la aplicación en Firefox. Y funciona a la perfección.
El problema lo tengo con el infumable ie6, la porción de código JavaScript no funciona >.<

En esta línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1.         if(t2.indexOf(t1[i]) === -1) {
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
dice que el objeto no acepta esta propiedad o método.

Al menos vi que el problema no es mío, es de Ie :) :? . A ver si doy con el arreglo,

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

Re: CGI, javascript y check de formulario

Notapor explorer » 2012-01-17 05:47 @282

¿¿¿ El Internet Explorer v6???

¿¿¿ Pero si es de hace 11 años ???

Ya ni siquiera tiene soporte de la empresa.

¿No sería mejor instalar la última versión del Explorer?

Es más... ¿No es más cómodo instalar la última versión del Firefox? O incluso del Chrome...

Total, en unos pocos minutos se baja e instala en cualquier Windows. Y para los desarrolladores como nosotros, el Firefox es una plataforma formidable para comprobar las páginas, gracias a sus muchos complementos, como el increíble Web Developer o el Firebug.

Y ya no vale la excusa de que Internet Explorer es lo más usado, ya que no es así.
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: CGI, javascript y check de formulario

Notapor newperlero » 2012-01-17 10:38 @485

Ojalá pudiera no depender del ie6. Por desgracia, en muchas empresas, se sigue plataformando los PC con ie6, supongo que porque dichas empresas tendrán hecho algún desarrollo que solo funcione correctamente en ese navegador.

Es de todas, todas, subrealista: es un browser inseguro y antiguo, que no cumple las necesidades actuales ni de los desarrolladores, ni de los usuarios finales.

Yo siempre uso Firefox, con Noscript, Firebug y algún otro addon más. Pero si es trabajo, y tengo que programar por narices para ie... pues las pruebas procuro ir haciéndolas con él también (aunque más de una vez recurro a Firebug :D )

Por cierto, por si le sirve a alguien... indexOf() e ie6.. no se llevan nada bien. Al final he optado por usar jQuery, con su Jquery.InArray, y funcionando.

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

Re: CGI, javascript y check de formulario

Notapor explorer » 2012-01-17 12:31 @563

Imagen
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 Web

¿Quién está conectado?

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

cron