我正在尝试学习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不接受true
,fasle
,1
或null
我收到了Uncaught SyntaxError: Unexpected token ,
,它在chrome dev工具中显示以下内容:
<script>
window.variable = {
a: ,
b: }
console.log(variable);
</script>
我哪里错了?
答案 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>