2012-07-25 80 views
6

可能重复:
transfer a Variable from php to js如何让PHP布尔FALSE以输出为FALSE仅

这似乎微不足道。我将PHP变量的值设置为false。然后经过一些处理,我在脚本中输出一些JavaScript变量。这是代码

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

当脚本完成后,我得到这样的输出:

var a = 1; 
var b = ; 

所以我得到的语法错误在JavaScript中。现在的问题是,如何将这些值作为JavaScript中的真布尔值?

预期输出:

var a = true; 
var b = false; 

我不想串像只'true''false' ...或1和0,但布尔truefalse。有关这方面的任何帮助,还有一些解释为什么PHP的行为如此?

+3

看的JavaScript布尔http://www.quirksmode.org/js/boolean.html – 2012-07-25 06:35:42

+0

上有SO similiar问题的逻辑 - 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而所有这些都是通过使用字符串来代替。 – sascha 2012-07-25 06:35:43

回答

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

我想,你不能简单地回显true/false来得到这个单词,你需要将它转换为字符串。

+1

正确,当你在js中回显它的时候,js值会保存一个布尔值,而不是一个字符串,因为它不会回显它周围的引号 – dano 2012-07-25 06:35:15

1

我怀疑这会工作,并易于加:

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

使用json_encode

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

编码为JSON。

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

我会用json_encode()在PHP端,并JSON2的JS一边传输变量。 (json2包括在大多数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> 

工程单变量太多,但我会建议将你的变量,所以他们不会污染JavaScript的全局对象。

3

另一种方式来做到这一点会使用var_export()

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

这真的很有趣,谢谢 – Shades88 2012-07-25 10:12:39