Foros del Web » Programando para Internet » Javascript »

Enviar datos de un formulario "padre" desde una ventana "hija"

Estas en el tema de Enviar datos de un formulario "padre" desde una ventana "hija" en el foro de Javascript en Foros del Web. Buenos días: 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 ...
  #1 (permalink)  
Antiguo 25/12/2012, 11:29
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Enviar datos de un formulario "padre" desde una ventana "hija"

Buenos días:
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();
}



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:
varCadena=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
Como ven, esta en ASP. Y funciona bien, pero el problema con este código es que me muestra los datos de esta forma

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ú
  #2 (permalink)  
Antiguo 25/12/2012, 11:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Enviar datos de un formulario "padre" desde una ventana "hija"

Si el problema es solo con el signo =, puedes usar encodeURIComponent() para escaparlo de modo que puedas incluirlo en el valor en la URL.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 25/12/2012, 12:02
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Enviar datos de un formulario "padre" desde una ventana "hija"

Gracias por la respuesta. Sorry pero no te comprendo ¿a que te refieres con "escaparlo"?
El detalle esta en que en la cadena que obtengo están los datos unidos de esta forma

dato=contenido&dato=contenido&dato=contenido&dato= contenido

y lo que necesito es separar "dato" de su "contenido" para poder utilizar una rutina en ASP que me permite ingresar varios datos en igual cantidad de campos. Por eso los formularios tienen igual nombre de campo que el de la base de datos, para poder ingresarlos más rápidamente, pues son formularios con muchos campos.

Mil gracias en verdad por tu apoyo.

Un saludo desde Lima, Perú
  #4 (permalink)  
Antiguo 25/12/2012, 12:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Enviar datos de un formulario "padre" desde una ventana "hija"

A que no tendrás problemas con el signo = si primero pasas el valor por la función encodeURIComponent. Lee esto: http://www.w3schools.com/jsref/jsref...icomponent.asp

Por otro lado, ¿has considerado usar Ajax? Quizás sea mejor opción.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 26/12/2012, 14:14
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Enviar datos de un formulario "padre" desde una ventana "hija"

Hola David, sorry la demora en responderte. Voy a leer la información que me has proporcionado. Había considerado la opción de ajax y un layer visible/invisible, pero tengo el problema que de momento a mi cliente se le ha ANTOJADO que sea con una ventana adicional del tipo creada por window.open().

Lo raro es que no funcione el

parent.opener.document.getElementById("id del formulario").submit();

yo pensé que algo así sería simple de implementar, pues cuando uso una función en una misma página, con el submit(), funciona perfectamente bien.

Un saludo desde Lima, Perú

Etiquetas: formulario, funcion, padre, ventanas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:36.