6

重複の可能性:
変数を php から js に転送する

これは些細なことに思えるかもしれません。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のような文字列は必要ありませんが、ブール値trueとのfalseみが必要です。これに関するヘルプと、PHP がこのように動作する理由についての説明はありますか?

4

6 に答える 6

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

単純に true/false をエコーし​​て単語を取得することはできません。それを文字列に変換する必要があります。

于 2012-07-25T06:33:33.987 に答える
4

json_encodeを使用します。

$a = true;
$b = false;
echo '<script type="text/javascript">
          var a = '.json_encode($a).';
          var b = '.json_encode($b).';
      </script>';
于 2012-07-25T06:35:44.287 に答える
3

それを行うもう1つの方法は、var_export()

echo '<script type="text/javascript">
          var a = ', var_export($a), ';
          var b = ', var_export($b), ';
      </script>';
于 2012-07-25T06:38:05.700 に答える
2

JSON としてエンコードします。

$ php
<?php
echo json_encode(true) . "\n";
echo json_encode(false) . "\n";             
true
false
于 2012-07-25T06:36:20.303 に答える
1

これは機能し、簡単に追加できると思います:

($val ? "true" : "false")
于 2012-07-25T06:33:47.407 に答える
1

php 側ではjson_encode()を使用し、js 側では JSON2 を使用して変数を転送します(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 のグローバル オブジェクトを汚染しないように、変数をグループ化することをお勧めします。

于 2012-07-25T06:36:34.053 に答える