Pasar variable de PHP a JavaScript

En este tutorial te mostraré un pequeño truco para hacer que una variable de PHP esté accesible desde JavaScript. Y no solo una variable, también un objeto, arreglo, etcétera.

Si bien esto no es recomendable, pues en su lugar debería usarse AJAX, podemos usar este pequeño truco en apuros para hacer que una variable de PHP esté disponible en JavaScript.

Explicación del funcionamiento

Debido a que PHP es un lenguaje que preprocesa el contenido HTML que se muestra, podemos hacer que se muestre un script de JavaScript (dentro de la misma página) y con PHP renderizar partes del contenido.

Quedará más claro con el ejemplo, pero basta con que sepas que para que esto funcione, el script debe estar “inline” en la página web, y no separado. Sin embargo también hay un modo de pasar variables a otros scripts, y lo veremos en los ejemplos.

Pasar variable de PHP a JS

Veamos el ejemplo más simple y queda así:

<html>
<head>
    <title>PHP Test</title>
</head>
<body>
<?php

// Esta variable puede venir de cualquier lugar
$miVariable = "Parzibyte";
// Aquí más código...
?>

<script type="text/javascript">
    const miVariableEnJavaScript = "<?php echo $miVariable ?>";
    // Justo aquí estamos pasando la variable ----^
    // Y ya la tenemos desde JavaScript. Podemos hacer cualquier cosa con ella
    console.log("El contenido de la variable es: " + miVariableEnJavaScript)
</script>
</body>
</html>

La magia sucede en la línea 14. Fíjate que es importante, en caso de que sea una cadena, de encerrarlo entre comillas (obviamente) pues PHP solo imprimirá el valor. El HTML final que va a generar la página sería:


<html>
<head>
    <title>PHP Test</title>
</head>
<body>

<script type="text/javascript">
    const miVariableEnJavaScript = "Parzibyte";
    // Justo aquí estamos pasando la variable ----^
    // Y ya la tenemos desde JavaScript. Podemos hacer cualquier cosa con ella
    console.log("El contenido de la variable es: " + miVariableEnJavaScript)
</script>
</body>
</html>

Variable accesible globalmente

Si quieres que tu variable viva de manera global y sea accesible desde otros scripts, también es posible. Podrías definirla en el encabezado y agregarla a window de JavaScript:

<html>
<?php

// Esta variable puede venir de cualquier lugar
$miVariable = "Parzibyte";
// Aquí más código...
?>
<head>
    <title>PHP Test</title>
    <script type="text/javascript">
        window.miVariableEnJavaScript = "<?php echo $miVariable ?>";
        // Justo aquí estamos pasando la variable ----^
    </script>
    <!--Y ya podemos incluir otros scripts ;)-->
    <script type="text/javascript" src="script.js"></script>
</head>
<body>

<p>Parzibyte.me</p>

</body>
</html>

Después, para acceder a ella en un script externo se haría lo siguiente:

console.log("Globalmente la variable es... " + window.miVariableEnJavaScript);

Y eso haría que la variable pasada de PHP a JavaScript sea accesible desde cualquier script. Solo recuerda definirla antes de incluir los otros scripts.

Pasar un arreglo u objeto de PHP a JavaScript

Anteriormente solo pasamos una simple cadena; pero podemos pasar también datos compuestos usando JSON. Gracias a que JSON representa, de cierto modo, datos nativos en JavaScript, podemos simplemente pasarlos codificados usando json_encode.

Veamos el siguiente ejemplo:

<html>
<?php

// Esta variable puede venir de cualquier lugar
$datos = [
    "nombre" => "Luis Cabrera Benito",
    "videojuegos_favoritos" => ["Resident Evil 2", "Celeste", "Cuphead", "Donkey Kong"],
    "edad" => 22,
    "mascota" => [
        "nombre" => "Maggie"
    ]
];
// Aquí más código...
?>
<head>
    <title>PHP Test</title>
    <script type="text/javascript">
        const datos = <?php echo json_encode($datos); ?>
        // Justo aquí estamos pasando la variable ----^

        console.log("Los datos son: ", datos);

        // Y podemos usar los datos normalmente ;)

        const nombre = datos.nombre;
        const videojuegos_favoritos = datos.videojuegos_favoritos;
        videojuegos_favoritos.forEach(videojuego => console.log("A %s le gusta jugar %s", nombre, videojuego));
    </script>
</head>
<body>

<p>Parzibyte.me</p>

</body>
</html>

Tenemos una variable digamos, compuesta. La estamos pasando a JavaScript con JSON. En este caso no necesitamos comillas pues JSON ya codifica directamente a datos que JavaScript entiende.

Al procesar el documento se va a generar lo siguiente:


<html>
<head>
    <title>PHP Test</title>
    <script type="text/javascript">
        const datos = {"nombre":"Luis Cabrera Benito","videojuegos_favoritos":["Resident Evil 2","Celeste","Cuphead","Donkey Kong"],"edad":22,"mascota":{"nombre":"Maggie"}}        // Justo aquí estamos pasando la variable ----^

        console.log("Los datos son: ", datos);

        // Y podemos usar los datos normalmente ;)

        const nombre = datos.nombre;
        const videojuegos_favoritos = datos.videojuegos_favoritos;
        videojuegos_favoritos.forEach(videojuego => console.log("A %s le gusta jugar %s", nombre, videojuego));
    </script>
</head>
<body>

<p>Parzibyte.me</p>

</body>
</html>

Como ves, los datos son válidos. Después de eso ya podemos acceder a los mismos. En este caso pasé un objeto, pero podría ser un arreglo.

Pasar variable de PHP a JavaScript

También se puede almacenar de manera global y bueno, todo lo que te puedas imaginar; depende de tus necesidades.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Pasar variable de PHP a JavaScript”

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *