Desarrollo front-end, estándares web, accesibilidad y más
Por kcmr, el 29 de agosto de 2009 en Javascript
La forma más sencilla de acceder a alguna variable de PHP desde Javascript, es colocar el Javascript en el código HTML.
Ejemplo:
<script type="text/javascript">
var flashvars = {
file: "<php echo get_settings('home'); ?>/archivo.xml"
}
</script>
Afortunadamente existe otro método para poder mantener el Javascript en un archivo independiente en el que podamos acceder a variables PHP.
Para poder hacer esto necesitamos servir los archivos Javascript como PHP.
El primer paso es renombrar el archivo Javascript para que su extensión sea .php. Lo podemos dejar como nombrearchivo.js.php para facilitar su identificación.
Dentro del archivo Javascript, al comienzo, necesitamos indicar que el contenido del archivo es de tipo Javascript:
<?php
Header("content-type: application/x-javascript");
?>
Podemos pasar las variables PHP que necesitemos como parámetro en la url:
<script type="text/javascript" src="js/nombrearchivo.js.php?url=<?php get_settings('home'); ?>"></script>
De esta forma podemos acceder a ellas mediante $_GET en el archivo Javascript:
<?php
Header("content-type: aplication/x-javascript");
$variablePHP = $_GET['url'];
echo "var variableJS = '" .$variablePHP. "';\n";
?>
// inicio del código javascript
var flashvars = {
file: variableJS + "/archivo.xml"
}
Usando este método también podemos reducir un poco el tamaño de los archivos Javascript encerrando los bloques de comentarios entre etiquetas PHP.
Más información: External JavaScript and PHP
Campos obligatorios marcados con asterisco *
2 comentarios
Por jervert, el 31 de agosto de 2009
Lo de hacer un js con extensión php (o la del lenguaje que se use para el desarrollo) es algo muy útil y que en muchas ocasiones no se considera (se prefiere meter el script dentro del HTML, con lo poco recomendable que es). También es algo muy útil en el caso de las CSS.
Por Vinnie, el 2 de marzo de 2010
Excelente trabajo, la verdad material digno de revisar, muy actualizado, muchisimas gracias.