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'or 'false'...or 1 和 0 这样的字符串,而只想要布尔truefalse。关于这个的任何帮助,还有一些关于为什么 PHP 会这样表现的解释?

4

6 回答 6

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

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

于 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

另一种方法是使用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来传输变量。(大多数js框架都包含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>

也适用于单个变量,但我建议对变量进行分组,这样它们就不会污染 javascript 的全局对象。

于 2012-07-25T06:36:34.053 回答