2012-07-25 11 views
6

Duplicar posibles:
transfer a Variable from php to jsCómo tener PHP FALSO booleano a enviar como FALSO única

Esto puede parecer trivial. Estoy configurando el valor de una variable de PHP como falso. Luego, después de un procesamiento, estoy generando algunas variables de JavaScript en una secuencia de comandos. Este es el código

$a = true; 
$b = false; 
echo '<script type="text/javascript"> 
      var a = '.$a.'; 
      var b = '.$b.'; 
     </script>'; 

Cuando termine el script consigo esta salida:

var a = 1; 
var b = ; 

así que consigo error de sintaxis en JavaScript. Ahora la pregunta es, ¿cómo tener esos valores como verdaderos valores booleanos en JavaScript también?

de salida previsto:

var a = true; 
var b = false; 

no quiero cadena como 'true' o 'false' ... o 1 y 0, pero booleano true y false solamente. ¿Alguna ayuda con respecto a esto, también con alguna explicación de por qué PHP se comporta de esta manera?

+3

mirada a la lógica de booleanos JavaScript http://www.quirksmode.org/js/boolean.html –

+0

Hay preguntas similiar en SO - http://stackoverflow.com/questions/4948663/php-get-bool-to-echo-false-when-false - http://stackoverflow.com/questions/2249235/is-there-a-way-to -get-true-false-values-from-a-boolean-in-php - http://stackoverflow.com/questions/11512705/print-false-in-php Y todos hacen lo mismo usando cadenas en su lugar. – sascha

Respuesta

9
echo '<script type="text/javascript"> 
      var a = '.($a?"true":"false").'; 
      var b = '.($b?"true":"false").'; 
     </script>'; 

Supongo que, usted no puede hacer eco de verdadero/falso para obtener la palabra, debe convertirlo en una cadena.

+1

a la derecha y cuando lo haga eco en js, el valor de js tendrá un booleano, no una cadena porque no hará eco con comillas a su alrededor – dano

1

Sospecho que esto iba a funcionar y sea fácil de añadir:

($val ? "true" : "false") 
4

Uso json_encode.

$a = true; 
$b = false; 
echo '<script type="text/javascript"> 
      var a = '.json_encode($a).'; 
      var b = '.json_encode($b).'; 
     </script>'; 
2

Codificar como JSON.

$ php 
<?php 
echo json_encode(true) . "\n"; 
echo json_encode(false) . "\n";    
true 
false 
1

me gustaría utilizar json_encode() en el lado php, y JSON2 en el lado js para transferir variables. (Json2 se incluye en la mayoría de los marcos js)

<?php 
$js_vars = json_encode(array(
    'a' => true, 
    'b' => false, 
)); 
?> 
<script> 
    JS_VARS = JSON.parse('<?php print $js_vars?>'); 
    console.log(JS_VARS.a, JS_VARS.b); 
</script> 

Obras para las variables individuales también, pero yo recomendaría para agrupar las variables para que no se contamine objeto global del Javascript.

3

una forma más de hacerlo sería utilizar var_export()

echo '<script type="text/javascript"> 
      var a = ', var_export($a), '; 
      var b = ', var_export($b), '; 
     </script>'; 
+0

que es realmente interesante, gracias – Shades88

Cuestiones relacionadas