Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/06/2007, 12:00
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 4 meses
Puntos: 45
Re: es posible enviar valores con JS

Se me acaba de ocurrir algún método para pasar variables de una página a otra de forma transparente, se trata de añadir un iframe de dimensiones de 100% a la página que contiene el formulario:

PRIMER ARCHIVO, formulario y script para poner el iframe:
Código PHP:
<form name="formulario">
    
Nombre: <input type="text" name="nombre" value="Paco" /><br />
    
Edad: <input type="text" name="edad" value="33" /><br />
    
Pais: <input type="text" name="pais" value="Es" /><br />
    
Sexo:
        <
div style="margin-left:20px;"
            <
input type="radio" name="sexo" value="hombre" /> Hombre <br/>
            <
input type="radio" name="sexo" value="mujer" /> Mujer <br/>
        </
div>
    
Posesiones:
        <
div style="margin-left:20px;">
            <
input type="checkbox" name="posesiones" value="casa" /> casa <br/>
            <
input type="checkbox" name="posesiones" value="coche" /> coche <br/>
            <
input type="checkbox" name="posesiones" value="perro" /> perro <br/>
            <
input type="checkbox" name="posesiones" value="chimenea" /> chimenea <br/>
        </
div>
    
Color favorito
        <
select name="color">
            <
option value="negro">negro</option>
            <
option value="rojo">rojo</option>
            <
option value="verde">verde</option>
            <
option value="azul">azul</option>
        </
select>
    <
br />
    <
input type="reset" value="reestablecer" /> 
    <
input type="button" value="enviar" onclick="enviar('pasar-variables-transparentemente-2.html')" />
</
form>


<
script>

function 
dibujaIframeEntero(src) {
    var 
elIframe document.createElement("IFRAME");
    
elIframe.setAttribute("width","100%");
    
elIframe.setAttribute("height","100%");
    
elIframe.setAttribute("frameborder","0");
    
elIframe.setAttribute("src",src);
    
elIframe.setAttribute("name","ventana2");
    
elIframe.style.position="absolute";
    
elIframe.style.top="0px"
    
elIframe.style.left="0px";
    
document.body.appendChild(elIframe);
}


function 
enviar(src) {
    
dibujaIframeEntero(src);
}

</script> 

SEGUNDO ARCHIVO, receptor:
Código PHP:
<script>

function 
e(q,noBr) {
    
document.body.appendChilddocument.createTextNode(q) );
    if(!
noBrdocument.body.appendChilddocument.createElement("BR") );
}


function 
recibir() {
    var 
fr top.document.formulario;
    
e("nombre: "+fr.nombre.value);
    
e("edad: "+fr.edad.value);
    
e("pais: "+fr.pais.value);
    for(var 
i=0i<fr.sexo.length && !fr.sexo[i].checkedi++);
    
e("sexo: "+fr.sexo[i].value);
    for(var 
i=0posesiones=new Array(); i<fr.posesiones.lengthi++)
        if( 
fr.posesiones[i].checked )
            
posesiones[posesiones.length]=fr.posesiones[i].value;
    
e("posesiones: "+posesiones.join(","));
    
e("Color favorito: "+fr.color.value);
}

recibir();


</script> 
nota: En firefox (por lo menos) si el segundo documento no tiene color de fondo, el valor aplicado es transparent, luego se verá la primera página por detrás. Recomiento poner bgcolor="white" en la etiqueta BODY en este ejemplo.



Así funcionaría, pero tendríamos problemas con el botón atrás (que se resolvería parcialmente poniendo un botón de [volver]).



.... o alguna chapuza parecida que sustituya al método POST.



Saludos
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.