Pasar variables de Javascript a PHP
Anuncio:
Veamos cómo pasar variables de Javascript a PHP de una manera sencilla con estas líneas de código.
Y no me refiero a la típica línea:
$var_php = "";
Al mostrar el valor de la variable por pantalla, realmente lo que hacemos es ejecutar el código javascript entrecomillado, por lo que no nos sirve este método.
Bien, tras reflexionar un poco sobre js y php, caí en que el servidor no podría tener la variable de ninguna de las maneras si el código era ejecutado en el cliente y no se le transmitía ¡¿Cómo no se me había ocurrido antes?!.
Pues bien, veamos el siguiente código:
echo " ";
//Ya tenemos capturada la variable con javascript
echo "
";
echo "";
Con estas líneas el archivo php se llama a sí mismo, pasando a través del formulario la variable javascript ‘cantidad’
Esta llamada entra en un bucle, ya que el archivo se llama a sí mismo pasando la variable, habría que implementar una variable ‘centinela’, que puede ser una variable de sesión, para controlar que SOLO pasemos el dato la primera vez
A mi me funciona bastante bien.
Espero que os sea de ayuda
HackSaludos!!
24 comentarios
Estuve un día entero buscando lo que compartiste de cómo pasar variables de Javascript a PHP, entendiendo la diferencia de la ejecución del código del cliente/servidor. Simplemente gracias. Por gente como vos se puede seguir adelante.
Gracias a ti por leernos!
Saludos 🙂
hola tengo un problema con un necesito enviar el resultado de la función sumar a una variable php me puedes ayudar tengo el siguiente codigo pero no funciona
//<![CDATA[
var variable1 = 1;
function sumar() {
var embobinado1 = variable1++;
// mostrar el valor de variable1
document.getElementById('valor').innerHTML = embobinado1;
}
<?php
echo '
‘;
echo »
var varjs= embobinado1;
«;
if (! isset($_POST[‘variable_php’]))
{
echo ‘
‘;
echo ‘
document.pasar.variable_php.value=varjs;
document.pasar.submit();
‘;
}
echo «Valor de la variable en PHP: «.$_POST[«variable_php»].» «;
echo ‘
‘
?>
Hola, asegurate que document.pasar hace referencia al formulario que has creado y al que haces submit.
Si no consigues averiguarlo, sube todo el código a github y lo vemos 🙂
Saludos!
Hola,
Yo necesitaba hacer lo que se expone aquí (pasar de js a php). Como la teoría indica que no es posible, y como lo que se expone al inicio como solución no me servía en mi caso particular (autoguardar lo que se escribe en un textarea), lo que hice fue:
– cada tantos segundos llamo a la función en js que carga una página en un marco escondido (window.parent.hideFrame.location=’pagina.php’) y se pueden pasar algunas variables por url, pero en mi caso no era suficiente porque eran muchos caracteres (de 2000 hacia arriba).
– En la página que se carga en el marco escondido, ejecuto php y con echo imprimo un form con los input hidden que necesite. Este form toma los valores pequeños por GET si se quiere.
– Luego, para los valores que no pueden ser traspasados por GET, con echo imprimo codigo js que le da, a los input hidden del form, los valores de los elementos del otro form (el original en el que se está escrbiendo) que está activo en pantalla (ejemplo: echo «document.FORM.texto_reunion.value = window.parent.mainFrame.document.getElementById(‘ELEMENTO_DEL_FORM_ORIGINAL’).value;»;)
– Luego el mismo código js executa el submit del FORM de la página escondida, recargando esta misma página escondida, y así capturo el dato en PHP. Guardo el dato en la base de datos e informo al usuario que está ok cambiando el text de un div en la pantalla original.
Sé que no está detalladamente explicado, pero la idea general le puede servir a alguien.
Bye
andrexrojas
Muchas gracias por tu aporte 😉
Hola, gracias por el post, estoy intentando crear la variable centinela de la que hablas pero simpre me vuelve a cargar el form y el script… he hecho algo como esto…
$_SESSION[‘ventana’] = $_POST[‘var_php’];
echo «VENTANA».$_SESSION[‘ventana’];
if($_SESSION[‘ventana’] == »){
echo «»;
echo «document.enviar.var_php.value=ancho;document.enviar.submit();»;
}
Podrías indicarme como solucionarlo, grácias anticipadas.
Carlos
Hola Carlos, entiendo que lo que quieres hacer con ese código es hacer un submit desde PHP y una sola vez, esto es, cuando «ventana», tu variable centinla, sea distinta del vacío. La idea la tiene bien pero tienes un pequeño error, si te fijas en el código de ejemplo el submit esta dentro de una etiqueta de script para indicarle al navegador que es código JS, mientras que tu no pones dicha etiqueta, el echo debe ser tal cual está en el ejemplo. Recuerda que el otro trozo de código también debe ir dentro de una etiqueta script Saludos
ok le mando el código HTML es que lo que quiero mandar es valor de un combo
Registro de una nueva aula
Institución en la que pertenece:
[[block: institut]]
[[nomI]]
[[/block: institut]]
Nombre del aula:
Guardar
Hola Fer, tienes que modificar las etiquetas HTML para que la web no las interprete, en caso contrario no podremos ver tu código. Separa con espacios los simbolos de < y > por ejemplo. Saludos