Paso de parámetros entre scripts
![Nota Nota](https://perlenespanol.com/foro/styles/prosilver/imageset/icon_post_target.gif)
¿Qué tal? Nuevamente solicitando de su valiosa y oportuna ayuda. El problema que tengo es el siguiente: Estoy utilizando un script el cual lo pongo a continuación:
Este script funciona bien,lo que hace es mandar a llamar a otro script mediante el ajax. Aqui pongo el archivo js que estoy utilizando.
El problema que tengo es que aun no sé cómo pasar los parámetros de este script hacia el primero y de ahí esos parámetros sean validados mediante JavaScript. Ya que en este script estoy utilizando una rutina para que me seleccione varias casillas dependiendo la opción seleccionada. Aquí pongo el script y agradecería su ayuda.
Quiero pasar como parámetro el contenido de la variable $option1, para que pueda validar los chekbox.
Saludos
Using perl Syntax Highlighting
BEGIN{ @INC=(@INC,"/var/www/cgi-bin/comun"); }
use binar10_html;
use strict;
&frm_inicio();
exit;
sub frm_inicio {
my($frm_p,@des_mod,%lab_des_mod);
push @des_mod,'0'; $lab_des_mod{'0'}='Selecciona un año'; $i=1;
($rs,$fetch)=record(db=>"fir2006",tabla=>"programa",condicion=>"group by 1 order by 1",campos=>"anio",alias=>"anio",visible=>"si");
while($fetch->()) {
$des_mod[$i]=($$rs{anio});
$lab_des_mod{$des_mod[$i]}=$$rs{anio};
$i++;
}
$frm_p=new HTML::Table(-rows=>5,-cols=>2,-border=>0,-bgcolor=>0,-width=>"80%",-spacing=>0,-padding=>0,-class=>'tablaP');
$frm_p->setCell(1,1, "<div id='demoIzq'>".popup_menu(-name=>'mod_inve',-id=>'mod_inve',-value=>[(@des_mod)],-labels=>{%lab_des_mod},-class=>'cur',-onChange=>'cargaContenido(this.id)')."<div>");
$frm_p->setCell(2,1, "<div id='demoDer'><div>");
print header(-type=>'text/html',-expires=>'-20d',-cache-control=>'no-cache, must-revalidate');
print start_html(-title=>'DESARROLLOS',
-script=>[
{ -language => 'JavaScript', -src => $server.'/script/comun/combos.js' }
],
-background=>'#336699',
-action=>$script_name,
-name=>'form',
-id =>'form',
-BGCOLOR=>'#ffffff',
-style=> {-src=>$server.'/desarrollo/desarrollo.css'},
-link=>'#0000ee',
-vlink=>'#0000ee',
-onload=>$onload
);
print"<center>";
$frm_p->print;
print end_form();
print "</center>";
print end_html();
exit;
}
use binar10_html;
use strict;
&frm_inicio();
exit;
sub frm_inicio {
my($frm_p,@des_mod,%lab_des_mod);
push @des_mod,'0'; $lab_des_mod{'0'}='Selecciona un año'; $i=1;
($rs,$fetch)=record(db=>"fir2006",tabla=>"programa",condicion=>"group by 1 order by 1",campos=>"anio",alias=>"anio",visible=>"si");
while($fetch->()) {
$des_mod[$i]=($$rs{anio});
$lab_des_mod{$des_mod[$i]}=$$rs{anio};
$i++;
}
$frm_p=new HTML::Table(-rows=>5,-cols=>2,-border=>0,-bgcolor=>0,-width=>"80%",-spacing=>0,-padding=>0,-class=>'tablaP');
$frm_p->setCell(1,1, "<div id='demoIzq'>".popup_menu(-name=>'mod_inve',-id=>'mod_inve',-value=>[(@des_mod)],-labels=>{%lab_des_mod},-class=>'cur',-onChange=>'cargaContenido(this.id)')."<div>");
$frm_p->setCell(2,1, "<div id='demoDer'><div>");
print header(-type=>'text/html',-expires=>'-20d',-cache-control=>'no-cache, must-revalidate');
print start_html(-title=>'DESARROLLOS',
-script=>[
{ -language => 'JavaScript', -src => $server.'/script/comun/combos.js' }
],
-background=>'#336699',
-action=>$script_name,
-name=>'form',
-id =>'form',
-BGCOLOR=>'#ffffff',
-style=> {-src=>$server.'/desarrollo/desarrollo.css'},
-link=>'#0000ee',
-vlink=>'#0000ee',
-onload=>$onload
);
print"<center>";
$frm_p->print;
print end_form();
print "</center>";
print end_html();
exit;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Este script funciona bien,lo que hace es mandar a llamar a otro script mediante el ajax. Aqui pongo el archivo js que estoy utilizando.
Using javascript Syntax Highlighting
// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="mod_inve";
//listadoSelects[1]="estados";
function buscarEnArray(array, dato)
{
// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
var x=0;
while(array[x])
{
if(array[x]==dato) return x;
x++;
}
return null;
}
function cargaContenido(idSelectOrigen)
{
// Obtengo el select que el usuario modifico
var selectOrigen=document.getElementById(idSelectOrigen);
// Obtengo la opcion que el usuario selecciono
var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
var ajax=nuevoAjax();
//ajax.open("GET", "combo_proceso.cgi?db=admin&opcion="+opcionSeleccionada, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
//selectDestino.parentNode.innerHTML=ajax.responseText;
demoDer.innerHTML=ajax.responseText;
}
}
ajax.open("POST","combo_proceso.cgi",true);
ajax.send("opcion="+opcionSeleccionada)
}
var listadoSelects=new Array();
listadoSelects[0]="mod_inve";
//listadoSelects[1]="estados";
function buscarEnArray(array, dato)
{
// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
var x=0;
while(array[x])
{
if(array[x]==dato) return x;
x++;
}
return null;
}
function cargaContenido(idSelectOrigen)
{
// Obtengo el select que el usuario modifico
var selectOrigen=document.getElementById(idSelectOrigen);
// Obtengo la opcion que el usuario selecciono
var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
var ajax=nuevoAjax();
//ajax.open("GET", "combo_proceso.cgi?db=admin&opcion="+opcionSeleccionada, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
//selectDestino.parentNode.innerHTML=ajax.responseText;
demoDer.innerHTML=ajax.responseText;
}
}
ajax.open("POST","combo_proceso.cgi",true);
ajax.send("opcion="+opcionSeleccionada)
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
El problema que tengo es que aun no sé cómo pasar los parámetros de este script hacia el primero y de ahí esos parámetros sean validados mediante JavaScript. Ya que en este script estoy utilizando una rutina para que me seleccione varias casillas dependiendo la opción seleccionada. Aquí pongo el script y agradecería su ayuda.
Using perl Syntax Highlighting
BEGIN{ @INC=(@INC,"/var/www/cgi-bin/comun"); }
use binar10_html;
use strict;
use vars qw($option1);
if($FORM{opcion}) { &buscaModelo(); }
#&buscaModelo();
exit;
sub buscaModelo {
my($table2,$fiscales,$especiales,$r,$r2,$table00,@option1);
($rs,$fetch)=record(db=>"fir2006",tabla=>"programa",condicion=>"WHERE anio=$FORM{opcion} order by 3 desc,1 asc",campos=>"clvprograma,descripcion,tipo",visible=>"no");
#($rs,$fetch)=record(db=>"fir2006",tabla=>"programa",condicion=>"WHERE anio=2008 order by 3 desc,1 asc",campos=>"clvprograma,descripcion,tipo",visible=>"no");
$fiscales=new HTML::Table(-cols=>1,-border=>0,-bgcolor=>0,-width=>"95%",-spacing=>0,-padding=>0);
$especiales=new HTML::Table(-cols=>1,-border=>0,-bgcolor=>0,-width=>"95%",-spacing=>0,-padding=>0);
$r=0; $r2=0; $i=0;
while($fetch->()){
if ($$rs{tipo} eq 'F') {
$r++;
$fiscales->setCell($r,1, "<input name=\"P$$rs{clvprograma}\" type='checkbox' checked disabled > $$rs{descripcion}");
$fiscales->setCellAlign($r,1,"left");
} else {
$r2++;
$especiales->setCell($r2,1, "<input name=\"P$$rs{clvprograma}\" type='checkbox' checked disabled > $$rs{descripcion}");
$especiales->setCellAlign($r2,1,"left");
}
push @option1, "option_array1[$i]="."'P".$$rs{clvprograma}."'"; $i++;
}
$option1=join("; ", @option1);
$table2 = new HTML::Table(-row=>2, -cols=>4, -border=>0, -bgcolor=>0, -width=>"100%", -spacing=>3, -padding=>1);
$table2->setCell(1,1, " <b>FISCALES</b> ");
$table2->setCell(1,2, "<input name='tipo_prog' type='radio' value='F' onClick='activaprogramas(1);' checked>");
$table2->setCell(2,1, " <b>ESPECIALES</b> ");
$table2->setCell(2,2, "<input name='tipo_prog' type='radio' value='E' onClick='activaprogramas(2);'>");
$table2->setCell(1,3, " <b>SELECCIONAR</b> ");
$table2->setCell(1,4, "<input name='tipo_prog' type='radio' value='S' onClick='activaprogramas(3);'>");
$table00 = new HTML::Table(-rows=>2,-cols=>2,-border=>0,-bgcolor=>0,-width=>"100%",-spacing=>1,-padding=>1,-class=>'tablaC');
$table00->setCell(1,1, "<fieldset><legend><font class=\"sBL4b\"><b>SELECCIONE UNA OPCION </b></legend></font>".$table2->getTable."</fieldset>");
$table00->setCell(2,1, "<fieldset><legend><font class=\"sBL4b\"><b>PROGRAMAS FISCALES </b></legend></font>".$fiscales->getTable."</fieldset>");
$table00->setCell(2,2, "<fieldset><legend><font class=\"sBL4b\"><b>PROGRAMAS ESPECIALES </b></legend></font>".$especiales->getTable."</fieldset>");
$table00->setCellVAlign(2,1, "TOP");
$table00->setCellVAlign(2,2, "TOP");
$table00->setCellWidth(2, 1, "50%");
$table00->setCellWidth(2, 2, "50%");
$table00->setCellColSpan(1,1,2);
#print header(-type=>'text/html',-expires=>'-20d',-cache-control=>'no-cache, must-revalidate');
print header();
print start_html(-title=>'FIRCO',
-script=>[
{ -language => 'JavaScript', -src => $server.'/script/comun/validaprog.js' }
],
-background=>'#336699',
-action=>$script_name,
-name=>'form',
-id =>'form',
-BGCOLOR=>'#ffffff',
-style=> {-src=>$server.'/firco/firco.css'},
);
print"<center>";
print '<center>';
$table00->print;
print '</center>';
print end_html();
use binar10_html;
use strict;
use vars qw($option1);
if($FORM{opcion}) { &buscaModelo(); }
#&buscaModelo();
exit;
sub buscaModelo {
my($table2,$fiscales,$especiales,$r,$r2,$table00,@option1);
($rs,$fetch)=record(db=>"fir2006",tabla=>"programa",condicion=>"WHERE anio=$FORM{opcion} order by 3 desc,1 asc",campos=>"clvprograma,descripcion,tipo",visible=>"no");
#($rs,$fetch)=record(db=>"fir2006",tabla=>"programa",condicion=>"WHERE anio=2008 order by 3 desc,1 asc",campos=>"clvprograma,descripcion,tipo",visible=>"no");
$fiscales=new HTML::Table(-cols=>1,-border=>0,-bgcolor=>0,-width=>"95%",-spacing=>0,-padding=>0);
$especiales=new HTML::Table(-cols=>1,-border=>0,-bgcolor=>0,-width=>"95%",-spacing=>0,-padding=>0);
$r=0; $r2=0; $i=0;
while($fetch->()){
if ($$rs{tipo} eq 'F') {
$r++;
$fiscales->setCell($r,1, "<input name=\"P$$rs{clvprograma}\" type='checkbox' checked disabled > $$rs{descripcion}");
$fiscales->setCellAlign($r,1,"left");
} else {
$r2++;
$especiales->setCell($r2,1, "<input name=\"P$$rs{clvprograma}\" type='checkbox' checked disabled > $$rs{descripcion}");
$especiales->setCellAlign($r2,1,"left");
}
push @option1, "option_array1[$i]="."'P".$$rs{clvprograma}."'"; $i++;
}
$option1=join("; ", @option1);
$table2 = new HTML::Table(-row=>2, -cols=>4, -border=>0, -bgcolor=>0, -width=>"100%", -spacing=>3, -padding=>1);
$table2->setCell(1,1, " <b>FISCALES</b> ");
$table2->setCell(1,2, "<input name='tipo_prog' type='radio' value='F' onClick='activaprogramas(1);' checked>");
$table2->setCell(2,1, " <b>ESPECIALES</b> ");
$table2->setCell(2,2, "<input name='tipo_prog' type='radio' value='E' onClick='activaprogramas(2);'>");
$table2->setCell(1,3, " <b>SELECCIONAR</b> ");
$table2->setCell(1,4, "<input name='tipo_prog' type='radio' value='S' onClick='activaprogramas(3);'>");
$table00 = new HTML::Table(-rows=>2,-cols=>2,-border=>0,-bgcolor=>0,-width=>"100%",-spacing=>1,-padding=>1,-class=>'tablaC');
$table00->setCell(1,1, "<fieldset><legend><font class=\"sBL4b\"><b>SELECCIONE UNA OPCION </b></legend></font>".$table2->getTable."</fieldset>");
$table00->setCell(2,1, "<fieldset><legend><font class=\"sBL4b\"><b>PROGRAMAS FISCALES </b></legend></font>".$fiscales->getTable."</fieldset>");
$table00->setCell(2,2, "<fieldset><legend><font class=\"sBL4b\"><b>PROGRAMAS ESPECIALES </b></legend></font>".$especiales->getTable."</fieldset>");
$table00->setCellVAlign(2,1, "TOP");
$table00->setCellVAlign(2,2, "TOP");
$table00->setCellWidth(2, 1, "50%");
$table00->setCellWidth(2, 2, "50%");
$table00->setCellColSpan(1,1,2);
#print header(-type=>'text/html',-expires=>'-20d',-cache-control=>'no-cache, must-revalidate');
print header();
print start_html(-title=>'FIRCO',
-script=>[
{ -language => 'JavaScript', -src => $server.'/script/comun/validaprog.js' }
],
-background=>'#336699',
-action=>$script_name,
-name=>'form',
-id =>'form',
-BGCOLOR=>'#ffffff',
-style=> {-src=>$server.'/firco/firco.css'},
);
print"<center>";
print '<center>';
$table00->print;
print '</center>';
print end_html();
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
Quiero pasar como parámetro el contenido de la variable $option1, para que pueda validar los chekbox.
Saludos