• Publicidad

Ajax: manejo de variables globales

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Ajax: manejo de variables globales

Notapor Otacon » 2011-12-18 17:19 @763

Cordial saludo.

Me pasa lo siguiente: hago una consulta de una base de datos y la imprimo en un div. Además le pongo una lista de checkbox para quitar y poner un registro de la consulta pero lo que quiero es que esa lista yo la pueda manejar con hash, y como llave, el primer parámetro de la lista y los datos los pueda manejar como una variable global porque no puedo manipular la base de datos si no en el script como tal.

En el div regional llamo todo la información en otras funciones de Ajax pero cuando entro a otra función se pierde la variable. Es como si se declarara como local o como si se reinicia la variable y volviera al inicio.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print $pjx->build_html( $cgi, \&mostrar_formulario );
  2. #Imprime toda la página html
  3. mostrar_formulario{
  4.         my $html = "
  5.        $form
  6.         $textoPagina
  7.  
  8.         <BODY>
  9.        <script language=\"JavaScript\" type=\"text/javascript\">
  10.  
  11.                 function adicionarlista(){
  12.                         var x;
  13.                         var checkboxes = document.getElementById(\"formcsv\").checkbox;
  14.                         document.form2.lista.value = '';
  15.                         for (x=0; x < checkboxes.length; x++) {
  16.                                 if (checkboxes[x].checked) {
  17.                                         document.form2.lista.value += checkboxes[x].value ;
  18.                                         document.form2.lista.value += ',';
  19.                                 }
  20.                         }
  21.                         document.form2.lista.value = document.form2.lista.value.substring(0,document.form2.lista.value.length-1);
  22.                 }
  23.                function cambiarnotificacion(){
  24.                        var x;
  25.                        oItems = document.getElementsByName(\"notificacion\");
  26.                        
  27.                        for (x=0; x < oItems.length; x++){
  28.                            if(document.form2.chkinf.checked){
  29.                                oItems[x].value = document.form2.notificaciones.value;
  30.                            }
  31.                            else{
  32.                                oItems[x].value = '';
  33.                            }
  34.                            
  35.                        }
  36.                }
  37.                function cargando(resultdiv){
  38.                    
  39.                    var div1 = document.getElementById(resultdiv);
  40.                    div1.innerHTML =\"<center><img src = /imagenes/cargando.gif/></center>\";
  41.                }
  42.                function cambio_opcion(formulario){
  43.                    formulario.opcion.value =\"2\";
  44.                    formulario.submit();
  45.                }
  46.  
  47.         </script>
  48.        
  49.        <form name=\"form2\" id =\"formcsv\" method=\"post\" action =\"nDesp_avantel.pl\">
  50.                 <table border =\"0\" align=\"center\" class=\"tabla\">
  51.                         <tr>
  52.                                 <td>
  53.                                         Compa&ntilde;ia :                      
  54.                                    <select name=\"compania\"id=\"compania\"
  55.                                    onChange =\"buscar_regional(['compania','rol','idUsuario'],['divregional']);\"
  56.                                    onBlur =\"buscar_regional(['compania','rol','idUsuario'],['divregional']);\">
  57.                                            <option value =  selected></option>\n
  58.                                            <option value =  ></option>\n
  59.                                    </select>
  60.                                 </td>                          
  61.                                <td>
  62.                                <input type=\"hidden\" name =\"rol\" id=\"rol\" value =\"$rol\">                                
  63.                                <input type=\"hidden\" name =\"idUsuario\" id=\"idUsuario\" value =\"$idUsuario\">
  64.                                </td>
  65.                         </tr>";
  66.  
  67.                 $html .= "<tr>
  68.                            <td colspan =\"3\">
  69.                                <div id=\"divregional\">
  70.                            </td>
  71.                        </tr>
  72.                        
  73.                         <tr>\n";
  74.                        
  75.  
  76.                
  77.         $html .= "                    
  78.                                            
  79.                        
  80.                </tr>
  81.                 </table>
  82.                
  83.                 <br>
  84.            <div id = \"divdespachos\" ></div>";
  85.         $html .= "     
  86.         <br>
  87.         ";
  88.         $html .= "<div id=\"divnone\"></div>\n
  89.        </form>
  90.         </body>
  91.         </html>";
  92.         return $html;
  93. }
  94. sub buscar_regional{
  95.  #consulto la base de datos
  96. #guardo información con un hash con la llave de llave primaria de la consulta de la #base de datos
  97. }
  98. sub actualizar{
  99. #modifico la información que se ha seleccionado con los checkbox de la función de #javascript de adicionarlista en la variable lista y lo cargo en el div de regional
  100. }
  101.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Otacon
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-12-18 16:48 @742

Publicidad

Re: Ajax: manejo de variables globales

Notapor explorer » 2011-12-18 17:55 @788

Bienvenido a los foros de Perl en español, Otacon.

Quizás has definido la variable JavaScript dentro de una función. En ese caso, es local a esa función.

Si quieres que sea global, deberás declararla fuera de cualquier función (o, que es lo mismo, declarar una variable sin usar 'var').
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: Ajax: manejo de variables globales

Notapor Otacon » 2011-12-18 18:50 @826

Cordial saludo.

Gracias por tu pronta respuesta. Lo que pasa es que la declaro así,
y las librerías que utilizo son estas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use CGI;
  3. use CGI::Ajax;
  4. use DBI;
  5. my %lista;#esta es la variable que cuando actualizo una información no guarda la #información
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿O como me recomendarías para manejarlo un poco mejor, la información?

Saludos
Otacon
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-12-18 16:48 @742

Re: Ajax: manejo de variables globales

Notapor explorer » 2011-12-19 07:53 @370

¡Ah! Lo había entendido mal. Creí que te referías al código JavaScript, del lado del cliente, y tu te refieres a una variable del lado del servidor.

El problema es que el servidor ejecuta, entrega el resultado al cliente y termina el proceso. Toda información de las variables, se pierde.

Una solución es la de volver a hacer las peticiones a la base de datos otra vez, cada vez que venga una petición del exterior.

Otra solución es la almacenar la información de las variables en el disco del servidor, para que sean recuperados en la siguiente ejecución. A eso se llama serialización.

En Perl hay muchas soluciones para eso. Uno de los más utilizados es el Cache::Cache, que permite almacenar la información junto con un tiempo de expiración, lo cual es ideal en ambientes web, como el que comentas.
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: Ajax: manejo de variables globales

Notapor Otacon » 2011-12-20 12:56 @580

Ok, gracias voy a implementarlo con un post con el llamado del mismo script y si algo utilizaré el paquete cache::cache.
Otacon
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-12-18 16:48 @742


Volver a Avanzado

¿Quién está conectado?

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

cron