Foros del Web » Programando para Internet » Javascript »

Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Estas en el tema de Pasar variables desde JavaScript a un fichero PHP de procesar Formulario. en el foro de Javascript en Foros del Web. Hola, Pese a ser novato en PHP y JS intento pasar variables entre los dos sistemas. Mi caso es que tras validar un formulario y ...
  #1 (permalink)  
Antiguo 09/12/2009, 06:50
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Hola,

Pese a ser novato en PHP y JS intento pasar variables entre los dos sistemas.
Mi caso es que tras validar un formulario y averiguar Pais y Ciudad por Javascript, lintento modificar con JS dos campos hidden del formulario y pasarlos a un fichero de proceso POST y recuperarlos desde ahí.
Se que en teoría puede hacerse, por lo que pediría a quien sepa como hacerlo que me muestre un código de ejemplo.
  #2 (permalink)  
Antiguo 09/12/2009, 07:06
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

te recuerdo que JS se ejecuta desde el cliente y PHP desde el servidor, por el cual no tienen comunicación directa, la unica forma de pasar datos entre ambos es enviar solicitudes HTTP vía formularios GET o POST, que es el sistema tradicional que "recarga la pagina" o una simple redireccion; window.location="pagina.php?varibleget=valor";

Otra técnica avanzada seria AJAX que te permite hacer lo anterior sin necesidad de refrescar la página "algo así como por debajo de la mesa", existen framework como jQuery que te ayudan a enviar POST via AJAX, pero por otro lado está XAJAX un framwork php que te facilita enormemente el manejo de ajax desde php y sin muchas complicaciones con JS.

Te recomiendo investigues sobre AJAX y elijas la mejor opcion para implementarlo
  #3 (permalink)  
Antiguo 09/12/2009, 07:17
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Hola,

Gracias por tu ayuda.
Se que JS y PHP se ejecutan en diferentes tiempos, pero dado que hablamos de 2 ficheros distinto (Formulario.html y Proceso.php), no entiendo porque hay que refrescar la página o usar AJAX, ¿ No hay otra forma de pasar una variable hidden y que la reciba Proceso.php ?
  #4 (permalink)  
Antiguo 09/12/2009, 08:04
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Cita:
Iniciado por ylodis Ver Mensaje
Hola,

Gracias por tu ayuda.
Se que JS y PHP se ejecutan en diferentes tiempos, pero dado que hablamos de 2 ficheros distinto (Formulario.html y Proceso.php), no entiendo porque hay que refrescar la página o usar AJAX, ¿ No hay otra forma de pasar una variable hidden y que la reciba Proceso.php ?
Definitivamente, no...
Acordate que PHP se ejecuta del lado del servidor! Como haces sin refrescar la pagina (haciendo submit por ejemplo), o mediante AJAX abriendo el script, para pasarle un dato al archivo PHP????

Es simple, o refrescas la pagina, o lo haces con AJAX, otra no hay che...
  #5 (permalink)  
Antiguo 09/12/2009, 08:16
Avatar de JoseTejada  
Fecha de Ingreso: diciembre-2007
Ubicación: Peru.Lima.Cercado.MDuarez.Granaderos172
Mensajes: 218
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Usando Ajax es de esta manera:
archivo "formulario.html"
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin t&iacute;tulo</title>
<
script language="javascript">
    var 
http;
   function 
getHTTP(){
           var 
xmlhttp;
            try
            {
                
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");                
            }
            catch(
e)
            {
                try
                {
                    
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(
e)
                {
                    try
                    {
                        
xmlhttp = new XMLHttpRequest();
                    }
                    catch(
e)
                    {
                        
xmlhttpfalse;                                            
                    }
                    
                }
            
            }
    
        return 
xmlhttp;

   }
   
http=getHTTP();
   function 
enviarDato(){
           if(
http){
            var 
nombre=document.getElementById("nombre").value;
            var 
codigo=document.getElementById("codigo").value;
            
http.open("GET","proceso.php?nombre="+nombre+"&codigo="+codigo);
            
http.onreadystatechange comunicacionPHP;
            
http.send(null);
        }else
            
alert("No hay HTTP");
   }
   function 
comunicacionPHP(){
           if(
http.readyState == 4)
        {        
                if(
http.status == 200){
                    
rspta http.responseText;
                    
//Aqui va la respuesta del servidor
                    
alert(rspta);
                }
        }
   }
</script>
</head>

<body>
<form onsubmit="javascript:{return false;}">
Ingresar nombre : <input type="text" name="nombre" id="nombre" />
<input type="hidden" name="codigo" id="codigo" value="12345" />
<br />
<input type="button" onclick="enviarDato()" value="Enviar dato"/>
</form>
</body>
</html> 
y el otro "proceso.php"

Código PHP:
<?php
    $txt 
"El nombre enviado por el cliente es : ".$_GET["nombre"]." y el codigo hidden es : ".$_GET["codigo"];
    echo 
$txt;
?>
Espero que sirva...suerte
  #6 (permalink)  
Antiguo 09/12/2009, 08:35
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Si entendí bien, ylodis no pretende hacer nada raro: tiene un formulario, modifica unos campos con javascript, cuando el formulario es enviado lo procesa con PHP ¿Es así? ¡Suerte!
  #7 (permalink)  
Antiguo 09/12/2009, 09:23
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Hola,

dgluz lo entiende perfectamente, y por ello dado que hay dos ficheros implicados no entiendo porque no puede hacerse sin entrar en grandes complicaciones, recargar páginas, etc.
Si el usuario puede cambiar el contenido de un campo del formulario, enviar y que PHP lo procese(desde luego en diferentes tiempos), no entiendo porque JS no puede hacer eso mismo con un campo hidden.
  #8 (permalink)  
Antiguo 09/12/2009, 09:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a Javascript
  #9 (permalink)  
Antiguo 09/12/2009, 09:58
Avatar de JoseTejada  
Fecha de Ingreso: diciembre-2007
Ubicación: Peru.Lima.Cercado.MDuarez.Granaderos172
Mensajes: 218
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Amigo ylodis, el campo hidden si es posible enviarse a proceso.php, precisamente puse un campo hidden en el codigo de mi respuesta anterior, en todo caso si no es eso lo que necesitas, pues no entiendo muy bien tu duda ...
  #10 (permalink)  
Antiguo 09/12/2009, 10:41
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Lo que tienes que hacer es modificar el value del campo hidden en cuestión. Para ello primero tienes que referenciar el campo desde una variable. Eso es fácil si el campo tiene un atributo id (id es la contracción de identificador; no debieran existir dos elementos con el mismo id en la misma página):
Código HTML:
<input type="hidden" name="tuCampo" id="tuId" value="un valor" /> 
Para referenciar desde javascript a ese elemento HTML, puedes hacer lo siguiente:
Código javascript:
Ver original
  1. var elCampo=document.getElementById('tuID');
Para modificarle el atributo value simplemente tienes que hacer:
Código javascript:
Ver original
  1. elCampo.value='el nuevo valor';
O directamente:
Código javascript:
Ver original
  1. document.getElementById('tuId').value='el nuevo valor';
Espero que haya quedado más o menos claro. Cualquier duda consúltala. ¡Suerte!
  #11 (permalink)  
Antiguo 09/12/2009, 10:45
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Hola,

Quiero que en un formulario de correo, el usuario cambie un campo text (por ejemplo su nombre) y que JS cambie otro campo hidden para que me llege el pais de procedencia del eMail que otro fichero en PHP recibirá y enviará. Habia pensado en hacerlo con metodo=post

La solución que propone JoseTejada, aunque se la agredezco, me parece compleja para modificar un sólo campo (ademása emplea el metodo=get ¿ no hay una solución que cambie el campo con una o pocas lineas de código ?
  #12 (permalink)  
Antiguo 09/12/2009, 11:48
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Y ¿cómo piensas averiguar el país?
  #13 (permalink)  
Antiguo 09/12/2009, 12:11
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Pensaba hacer


Habiendo hecho antes en el <head> :

<SCRIPT TYPE="text/javascript"src="XXXj.maxmind.com/app/geoip.js"></script>

Sustituyendo XXX por Hache Te Te Pe dos puntos //
  #14 (permalink)  
Antiguo 09/12/2009, 12:37
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

No sé cómo se usa ese script, pero lo que tendrías que hacer es obtener el país en una variable y asignarle ese valor al value de tu campo hidden como te mostré más arriba. Se me ocurre que eso quizás puedas hacerlo en la carga de la página (onload) o sino en el envío del formulario (onsubmit). ¡Suerte!
  #15 (permalink)  
Antiguo 09/12/2009, 12:59
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

El script lo devuelve en la variable geoip_country_name()

He intentado reproducir tu solución dggluz, pero no hay manera.
En el formulario Hago :

Código:
<input type="hidden" name="pais" id="tuId" value="un valor" />
Para validar los campos del formulario tengo otro fichero JS y al final del todo hago :

Código:
	document.getElementById(tuId).value = 'el nuevo valor');
	alert("Valor : "+document.correo.pais.value);
Tabien he probado :

Código:
	document.getElementById('tuId').value = 'el nuevo valor');
	alert("Valor : "+document.correo.pais.value);

Como ves intento ser lo más literal posible a la solución que aportas, pero debe haber algún problema porque ni siquiera se ejecuta el alert, cosa que sí hace cuando transformo la linea anterior en comentarios.
En caulquier caso haga lo que haga, el valor final que recibe el procesador de formulario es"un valor".
  #16 (permalink)  
Antiguo 09/12/2009, 13:16
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Debes usar algún depurador de código javascript para ver cuál es el error que tienes (quizás ese paréntesis del final de la línea en que asignas el valor, quizás que el id - al ser un literal de cadena, o una constante - debe ir entre comillas, quizás las dos cosas); firefox tiene una consola de errores incorporada que te puede ser muy útil (herramientas->consola de errores); o por lo menos ver tu código completo para saber dónde está el error. Por otro lado, si el valor que quieres enviar lo obtienes desde geoip_country_name(), entonces deberías hacer:
Código javascript:
Ver original
  1. document.getElementById('tuId').value = geoip_country_name();
¡Suerte!
  #17 (permalink)  
Antiguo 09/12/2009, 13:52
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Lo he puesto como dices y funciona bien cuanto lo pongo en vista previa del Dreamweaver, pero cuando lo subo por FTP y lo pruebo en Internet, mantiene el valor original y ni siquiera se ejecuta el alert. El fichero que pide los datos y que ejecuta la validación JS es HTML y me he asegurado de subir tambien el fichero JS, con lo cual alucino.

Respecto a la consola de errores Firefox no he visto que se queje por JS, los unicos warnings que salen corresponden a CSS
  #18 (permalink)  
Antiguo 10/12/2009, 07:22
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Hola,

El problema ya está resuelto. Se trataba simplemente de que entre el nombre del fichero JS yla linea donde se cargaba había una mayuscula de diferencia y según parece el emulador de Dreamwaver no emula tan bien como debiera.

Quiero dar las gracias a dggluz por su ayuda y apoyo, porque no conocía la consola de errores de Firefox que me ha permitido localizar el fallo en mis códigos.
  #19 (permalink)  
Antiguo 10/12/2009, 10:02
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

De nada, estamos para ayudar.

PD: seguramente tu hosting tiene linux que diferencia mayúsculas y minúsculas en los nombres de archivo y la PC donde probaste primero el código tiene windows, que no lo hace.
  #20 (permalink)  
Antiguo 19/10/2010, 13:39
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Información Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

Cita:
Iniciado por JoseTejada Ver Mensaje
Usando Ajax es de esta manera:
archivo "formulario.html"
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin t&iacute;tulo</title>
<
script language="javascript">
    var 
http;
   function 
getHTTP(){
           var 
xmlhttp;
            try
            {
                
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");                
            }
            catch(
e)
            {
                try
                {
                    
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(
e)
                {
                    try
                    {
                        
xmlhttp = new XMLHttpRequest();
                    }
                    catch(
e)
                    {
                        
xmlhttpfalse;                                            
                    }
                    
                }
            
            }
    
        return 
xmlhttp;

   }
   
http=getHTTP();
   function 
enviarDato(){
           if(
http){
            var 
nombre=document.getElementById("nombre").value;
            var 
codigo=document.getElementById("codigo").value;
            
http.open("GET","proceso.php?nombre="+nombre+"&codigo="+codigo);
            
http.onreadystatechange comunicacionPHP;
            
http.send(null);
        }else
            
alert("No hay HTTP");
   }
   function 
comunicacionPHP(){
           if(
http.readyState == 4)
        {        
                if(
http.status == 200){
                    
rspta http.responseText;
                    
//Aqui va la respuesta del servidor
                    
alert(rspta);
                }
        }
   }
</script>
</head>

<body>
<form onsubmit="javascript:{return false;}">
Ingresar nombre : <input type="text" name="nombre" id="nombre" />
<input type="hidden" name="codigo" id="codigo" value="12345" />
<br />
<input type="button" onclick="enviarDato()" value="Enviar dato"/>
</form>
</body>
</html> 
y el otro "proceso.php"

Código PHP:
<?php
    $txt 
"El nombre enviado por el cliente es : ".$_GET["nombre"]." y el codigo hidden es : ".$_GET["codigo"];
    echo 
$txt;
?>
Espero que sirva...suerte
  #21 (permalink)  
Antiguo 19/10/2010, 13:48
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

José... buen día.
Estoy en el mismo problema excepto que yo tengo una variable obtenida de la acumulación de de respuestas a formulario con JS. He visto su solución para pasar el valor de una forma a PHP y me parece que la solución para pasar esa variable puede ser similar. He intentado pero no obtengo el resultado requerido. La pregunta es: en su código, cómo se enviaría mi variable JS a PHP. Gracias.
  #22 (permalink)  
Antiguo 13/01/2011, 09:59
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Pasar variables desde JavaScript a un fichero PHP de procesar Formulario.

José... feliz año. Sólo ahora vi su respuesta y me funcionó. Gracias.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:03.