2012-05-19 21 views
6

¿Hay alguna forma en que pueda usar una variable php en el script JQuery?Usar una variable PHP en JQuery

Ejemplo:

  • variable de PHP: $sr2
  • Extracto de la secuencia de comandos de jQuery (con variable): $('#a2_bottom_$sr2')

¿Cómo lo hago por lo que la variable es válida en esa parte jQuery?

Gracias

+3

¿Dónde se encuentra el código de jQuery? ¿Dentro del archivo PHP o en un archivo .js separado? –

+0

Se encuentra en el mismo archivo que PHP –

Respuesta

8

Lo que podría hacer simplemente es usar su PHP para repetir el código para iniciar una Java Variable de script

<script type="text/javascript"> 
<?php 

    $phpVar = "foo"; 
    echo "var phpVariable = '{$phpVar}';"; 

?> 
</script> 

Una vez que el código PHP se analiza, y el HTML se envía al usuario - todo lo que se ve es el resultado del eco de PHP -

<script type="text/javascript"> 
    var phpVariable = 'foo'; 
</script> 

Ahora su phpVariable está disponible para su JavaScript ! Así que lo utilice como lo haría en cualquier otro caso -

$("div."+phpVariable); 

Eso nos recuperar cualquier elemento <div> con una clase foo -

<div class="foo"></div> 
+0

Es realmente viejo, pero ahora obtengo un error de JavaScript en tu código "Uncaught SyntaxError: Token inesperado <" –

+0

@IrtzaShahan - esto significa que hubo un error al insertar la variable en el javascript. Asegúrese de ajustar su variable php con comillas para que el resultado final que hace eco en la página se vea como javascript normal. Recuerde que el navegador aún necesita leer y usar los valores javascript que ha creado. – Lix

9

PHP se ejecuta en el servidor, jQuery ejecuta en el cliente. Si desea que una variable de PHP esté disponible para jquery (y, por extensión, para el motor de JavaScript subyacente), tendrá que enviar el valor de la variable al momento de la salida de la página en el servidor, p.

<script type="text/javascript"> 
    var my_php_var = <?php echo json_encode($the_php_var) ?>; 
</script> 

o recuperar el valor a través de una llamada AJAX, lo que significa que básicamente está creando un servicio web.

+3

+1 para json_encode; Creo que es crucial que si vamos a discutir la impresión de una variable como código JS que discutimos cómo evitar romperla :) – Kato

2

Asumiendo que su jQuery es en el mismo archivo:

... $('#a2_bottom_<?php echo $sr2 ?>') ... 
+0

funciona bien ... a menos que '$ sr2' contenga comillas, espacio, etc. – Spudley

+1

Pero ya es parte de una identificación, no puede contener esos caracteres de todos modos. –

+0

exactamente; si la variable '$ sr2' contiene alguno de esos caracteres, ya sea por accidente o por un ataque de ataque deliberado, la línea del código jQuery no será válida. Como mínimo, use 'json_encode()' para asegurarse de que sea una sintaxis válida, pero en este caso también puede ser necesaria una validación adicional como espacios de extracción, etc. – Spudley

5

Se podría salida como parte de la página en una etiqueta de script ... es decir

<script type="text/javascript"> 
<?php 
echo "var sr2 = \"" . $sr2 . "\""; 
?> 
</script> 

Luego, su línea de jQuery sería capaz de acceder a ella:

$('#a2_bottom_' + sr2) 
+1

para mayor seguridad, use 'json_encode()' al hacer eco de la variable a su javascript, pero básicamente esta es la respuesta correcta. – Spudley

Cuestiones relacionadas