Pasar variable de ventana hija a padre (no form)

Soy novato en Javascript y he tratado de encontrar un solución a pasar variables de una ventana hija a una padre. Encontré cómo hacerlo usando formularios, pero mi pregunta es:
Puedo pasar una variable como tal, sin hacer uso de un campo de formulario de tal manera que la pueda leer en php en la ventana padre o en todo caso si la paso como valor de un campo de formulario puedo leerla inmediatamente después de cerrar la ventana hija sin ejecutar el formulario de la ventana padre, ¿cómo?.
De no poder hacerse, ¿habría alguna alternativa a esto?.

1 respuesta

Respuesta
1
La forma más fácil, es guardar la variable en un input, en la ventana "abridora". utilizando el método window. Opener (en el caso de un pop up) puede acceder al DOM completo de la ventana que abrió el pop up.
Hola Maop84, gracias por tu respuesta, pero me parece que haces referencia a usar el campo input de un formulario; sin embargo la solución que trato de hallar es diferente a esta y la verdad no sé si puede o si éste es el único camino para este caso.
Gracias.
¿Lo qué quieres es dejar guardada la variable? ¿O simplemente pasar a una función?
 con window. Opener, también puedes acceder a cualquier función declarada en la primer ventana, y pasarle variables, si así lo necesitan.
Marcelo
Pues sí, lo que quiero lograr es poder leer la variable enviada desde el popup con php. ¿Es posible?
Pues si quieres que PHP la lea, tienes 2 opciones:
1) Envías un formulario (ya se por POST o GET), y php la lea, y el usuario ve la regarga de la página.
2) Haces una llamada AJAX, con lo que el usuario no vería la regarga de la página, pero se estaría ejecutando el script PHP.
La forma más fácil de hacerlo, es con alguno de los frameroks de JS, personalmente uso Mootools, pero jquery, prototype, script. Aculo. Us, dojo, o cualquier otro lo puede hacer tranuilamente.
No te olvides que Javascript es un lenguaje que se ejecuta en el cliente, mientras PHP se ejecuta en el servidor, la única forma que tienen ambos de comunicarse, es vía POST o GET.
Creo que la forma más sencilla de hacerlo, sería poner una función tipo:
function recargarPagina(variable){
    var url = "pagina.php?var="+ variable;
    $('[idDeLaDivQueQuieresRecargar]').load(url);
   }
Esto iría en el opener, y requiere mootools
Mientras en el pop up pones en el onclick del botón, o en el disparador del evento:
 window.opener.recargarPagina([variableQueQuieresPasar]);
El archivo página.php, es muy sencillo, y no debería ser muy complicado, recuerda no agregarle tags html, ni head, ni body, ya que al hacer la llamada ajax, lo tomaría como parte de la página actual ;)
Gracias Maop84. Te comento que pude solucionar el tema, a continuación pongo el código por si a alguien se le ocurre enredarse como a mí:
archivo variable.php
<?
if (!empty($_POST['codigo'])){
 $cod = $_POST['codigo'];
}
?>
<body>
<form name="formulario" method="post" action="variable.php" >
<input type="text" name="codigo" id="codigo" value="Blank"/ >
<a href="#" title="" onClick="window.open('paso.html')" >Click (popup) </a >
</form>
<br />
<?
 echo 'cod= '.$cod; ?>
</body>
archivo paso.html
<body>
<a href="javascript:close();" title="pasar valor" onClick="window.opener.document.formulario.codigo.value = 1; window.opener.document.forms[0].submit(); " >Pasar valor a ventana padre </a >
</body>
Espero pueda ser de ayuda.
Muchas Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas