2012-07-25 83 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