だけ

2012-07-25 6 views
6

可能性の重複:
transfer a Variable from php to jsだけ

これは些細なように見えるかもしれません。 PHP変数の値をfalseに設定しています。その後、いくつかの処理の後、私はスクリプトでいくつかのJavaScript変数を出力しています。

var a = 1; 
var b = ; 

だから私はJavaScriptでシンタックスエラーが表示されます。これは、スクリプトは、私はこの出力を得る終了コード

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

です。さて、問題はJavaScriptで真のブール値としてこれらの値を持つ方法です

意図した出力:

var a = true; 
var b = false; 

私だけ'true'または'false' ...または1と0が、ブールtruefalseのような文字列を望んでいません。 PHPがこのように動作する理由についての説明もあります。

+3

JavaScriptのブール値のロジックを見http://www.quirksmode.org/js/boolean.html –

+0

を使用されるだろう - 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-of-a-boolean-in-php - http://stackoverflow.com/questions/11512705/print-false-in-phpそして、代わりに文字列を使用して同じことをします。 – sascha

答えて

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

私は、あなたは、単に単語を取得するために真/偽エコーカント、あなたがそれを文字列に変換する必要があるとします。

+1

とjsでエコーするとき、jsの値はブール値を保持します。文字列ではなく、引用符で囲まれてエコーされないので、 – dano

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

私は変数を転送するために、JS側のPHP側のjson_encode()、およびJSON2を使用します。あまりにも単一の変数の

<?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> 

ワークス(json2は、ほとんどのJSフレームワークに含まれている)、しかし、彼らにはJavaScriptのグローバルオブジェクトを汚染しないように、私はグループにあなたの変数をお勧めします。それを行うには

3

もう一つの方法は、SOに似質問がありvar_export()

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

本当に面白いです – Shades88