2011-06-19 18 views
5

Duplicar posibles:
Pass a PHP string to a Javascript variable (and escape newlines)constantes PHP en un archivo JavaScript

estoy trabajando en un proyecto y ya está hecho, pero necesita una más midification y sus aplicando constantes del lenguaje en los archivos javascript

considerar incluimos un archivo javascript y en que tener algo como esto

  alert("YOU Have VOTED BEFORE"); 

fácil de esa manera, el guión le avisará que el texto

pero lo que si tenemos que alertar a una constante lengua de que:

  alert("<?php echo _VOTED_BEFORE?>"); 

esto se trabajará sólo si eco de la secuencia de comandos como línea de mis códigos php ...

pero, ¿cómo podemos leer e incluir las constantes de php o $ vars para un archivo de JavaScript externo?

Respuesta

4

Hay una manera de hacer esto utilizando una cadena de consulta en la ruta del script

Véase mi respuesta aquí

How to pass variable from php template to javascript

Desafortunadamente esto romperá el caché para el archivo js para que el peso de sus opciones primero

<script type="text/javascript" src="script.js?flag=<?php echo _VOTED_BEFORE?>"></script> 

para no escribir demasiado código, consulte el enlace para ver cómo recuperar el valor

+0

+1 para la pregunta, no necesariamente para la solución :) – mplungjan

+0

respuesta más corta y la más genial en mi ojo .. gracias hermano –

+0

hey en el archivo javascript, ¿cómo puedo leer los vars? –

1

Si no es un archivo PHP, no puede incluir funciones de eco PHP en él. Sugiero que si desea utilizar una variable de PHP en sus archivos js externos, entonces declare como global en su archivo PHP antes de hacer referencia a los js externos.

<script type="text/javascript"> 
    var globalvar = '<?php echo _VOTED_BEFORE ?>' ;  
</script> 
<script type="text/javascript" src="externalfile.js"></script> 

Aunque no siempre es una buena idea desordenar el espacio de nombres global.

+1

Tendría que citar eso ya sea en el cliente o en el servidor – mplungjan

+0

@mplungjan - ¿Qué quiere decir? – Jivings

+0

Quiere decir que al hacer un eco de _VOTED_BEFORE dará como resultado una cadena que generará un error de sintaxis en javascript si no lo envuelve en comillas. – Dan

-1

Usted puede utilizar cookies para salvar estas constantes y leerlos en la vía JavaScript o tendrá que utilizar AJAX

+0

¡Qué horrible idea enviar todas las traducciones posibles en una cookie o malgastar las solicitudes cuando todo lo que tienes que hacer es hacer que el archivo js sea un archivo php con un tipo de mime – mplungjan

+0

Dijo que ya sabe hacerlo en línea ... Lea detenidamente su pregunta: "Esto solo funcionará si hago eco del guión como en línea de mis códigos php ..." –

2

En realidad, lo que tenía estaba cerca de ser correcta.

<?php 
// Valid constant names 
define("VOTED_BEFORE", "false"); 
?> 

<script type="text/javascript"> 
    alert("<?php echo VOTED_BEFORE;?>"); 
</script>  
+0

Si el js inicial está incluido a través de la etiqueta de secuencia de comandos, esto no funcionará. – stefgosselin

7

Para una estructura más limpia, creo que la mejor manera es poner todos los datos que recibe de PHP en un solo lugar, es decir, en el HTML que sirve a través de PHP:

<script> 
    var MyNameSpace = { 
     config: 
      something: "<?php echo _VOTED_BEFORE ?>" 
     } 
    } 
</script> 

En el Javascript archivo que incluye luego, puede acceder al valor a través del MyNameSpace.config.something.

Esto hace que sea más fácil reutilizar el mensaje.

+0

Manera impresionante de manejar las constantes PHP/Javascript. ¡Gracias! – user3089840

Cuestiones relacionadas