javascript不接受来自php的布尔值或null

时间:2017-07-14 19:37:48

标签: javascript php

我正在尝试学习javascript。我有以下代码:

<?php
    $a = true;
    $b = false;
?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
        window.variable = {
            a: <?php $a ? true : false ?>,
            b: <?php $b ? 1 : null ?>
        }

        console.log(variable);
    </script>
</body>
</html>

Javascript不接受truefasle1null 我收到了Uncaught SyntaxError: Unexpected token ,,它在chrome dev工具中显示以下内容:

<script>
    window.variable = {
    a: ,
    b:      }

    console.log(variable);
</script>

我哪里错了?

2 个答案:

答案 0 :(得分:1)

a: <?php $a ? true : false ?>,
b: <?php $b ? 1 : null ?>

首先,您不输出任何内容。你需要echo件事。

其次,false的字符串表示形式为空字符串。 null也是如此。因此,即使使用echo,您也会获得$a$b的某些值的空输出,以及相同的JS语法错误。

您可以通过输出字符串 true,false和null来修复输出:

a: <?php echo $a ? 'true' : 'false' ?>,
b: <?php echo $b ? 1 : 'null' ?>

但是为了获得更具弹性的方法,因为您要在JavaScript中输出以供使用,请改用json_encode

a: <?php echo json_encode($a ? true : false) ?>,
b: <?php echo json_encode($b ? 1 : null) ?>

或者更好的是,让PHP输出整个JS对象:

window.variable = <?php echo json_encode([
    'a' => $a ? true : false,
    'b' => $b ? 1 : null,
]); ?>;

答案 1 :(得分:0)

请记住,您正在构建文字;使用&#34; echo&#34;输出正确的值作为字符串。

<?php
  $a = true;
  $b = false;
?>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
    <script>
        window.variable = {
            a: <?php echo $a ? "true" : "false" ?>,
            b: <?php echo $b ? "1" : "null" ?>
        }

        console.log(variable);
    </script>
</body>
</html>