Veamos, esto es un poco complicado así que les comento.
Tengo una página MAIN.ASP que tiene un iframe con el id="resumen" y en ese iframe se carga otra página que de momento no tiene importancia.
La página MAIN.ASP tiene 2 formularios los cuales deben ser enviados a una página para ser procesados. Normalmente luego de un proceso de validación en javascript procedía a enviar los datos con un form.submit() simple, pero, y aquí viene la "complicación", se me solicitó que cree una ventana adicional para el ingreso de datos de "autenticación" (una suerte de ingreso de usuario y password) el cual debe ser validado antes de procesar los datos de ambos formularios.
Y el asunto esta en que en esa ventana adicional tengo un botón de validación que debe de realizar no sólo la validación del usuario y password ingresado sino que debe de enviar los datos de los 2 formularios antes mencionados. Y no se como hacerlo.
En un inicio cree una función que recoge los datos de ambos formularios y los envía a la página que los debe procesar
Cita:
function procesar()
{
var sAux="";
var frm = parent.opener.document.getElementById("ingRecepcio nHACCP01");
for (i=0;i<frm.elements.length;i++)
{
var campo=frm.elements[i].name;
if(frm.elements[i].value=="" || frm.elements[i].value=="ND")
{sAux += frm.elements[i].name + "\n";}
else if(frm.elements[i].name=="turno")
{
if(frm.elements[i].checked)
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
else
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
var frm = parent.opener.document.getElementById("ingRecepcio nHACCP02");
for (i=0;i<frm.elements.length;i++)
{
var campo=frm.elements[i].name;
if(campo.indexOf('bot')==-1)
{
if(frm.elements[i].value=="" || frm.elements[i].value=="ND")
{sAux += frm.elements[i].name + "\n";}
else if(frm.elements[i].name=="contQuim")
{
if(frm.elements[i].checked)
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
else if(frm.elements[i].name=="utiHielo")
{
if(frm.elements[i].checked)
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
else
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
}
parent.opener.document.reporte.location.href="proc-controlrecepcionMP.asp?op=data&"+sAux;
parent.opener.document.getElementById("ingRecepcio nHACCP02").reset();
}
{
var sAux="";
var frm = parent.opener.document.getElementById("ingRecepcio nHACCP01");
for (i=0;i<frm.elements.length;i++)
{
var campo=frm.elements[i].name;
if(frm.elements[i].value=="" || frm.elements[i].value=="ND")
{sAux += frm.elements[i].name + "\n";}
else if(frm.elements[i].name=="turno")
{
if(frm.elements[i].checked)
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
else
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
var frm = parent.opener.document.getElementById("ingRecepcio nHACCP02");
for (i=0;i<frm.elements.length;i++)
{
var campo=frm.elements[i].name;
if(campo.indexOf('bot')==-1)
{
if(frm.elements[i].value=="" || frm.elements[i].value=="ND")
{sAux += frm.elements[i].name + "\n";}
else if(frm.elements[i].name=="contQuim")
{
if(frm.elements[i].checked)
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
else if(frm.elements[i].name=="utiHielo")
{
if(frm.elements[i].checked)
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
else
{sAux += frm.elements[i].name + " = " + frm.elements[i].value + "&";}
}
}
parent.opener.document.reporte.location.href="proc-controlrecepcionMP.asp?op=data&"+sAux;
parent.opener.document.getElementById("ingRecepcio nHACCP02").reset();
}
Y lo hace bien en realidad, pero lo que envía, obviamente, es una cadena larga que luego tengo que "fragmentarla" de esta forma
Cita:
Como ven, esta en ASP. Y funciona bien, pero el problema con este código es que me muestra los datos de esta formavarCadena=Request.ServerVariables("QUERY_STRING")
varDato=split(varCadena,"&")
For Each Dato In varDato
If Left(Dato,13)="observaciones" Then
Response.Write (Replace(Dato,"%20"," ") & "<br>")
Else
Response.Write (Replace(Dato,"%20","") & "<br>")
End If
Next
varDato=split(varCadena,"&")
For Each Dato In varDato
If Left(Dato,13)="observaciones" Then
Response.Write (Replace(Dato,"%20"," ") & "<br>")
Else
Response.Write (Replace(Dato,"%20","") & "<br>")
End If
Next
turno=D
horario=2
peso=123.45
Es decir que no se separa el nombre del campo del valor del mismo. Podría incluir una rutina para separar los datos antes y después del "=" pero sucede que eventualmente alguno de estos datos podría tener como contenido el mencionado símbolo.
He probado con esto
parent.opener.document.getElementById("ingRecepcio nHACCP02").submit()
que es una función que se invoca desde la ventana adicional de validación, pero no resulta.
En verdad espero haberme explicado bien.
Ojalá puedan ayudarme.
Un saludo desde Lima, Perú