2017-07-14 74 views
0

我正在學習JavaScript。我有以下代碼:javascript不接受boolean或null從php

<?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瀏覽器開發工具如下:

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

    console.log(variable); 
</script> 

我在哪裏錯了?

+0

您必須重現該值。 –

+0

你需要你的PHP變量是json_encoded,E.G'a:<?php echo json_encode($ a)?真假; '>,' – GrumpyCrouton

+0

''標記僅用於執行php。它不會向文檔輸出任何內容。你需要使用[echo或](http://php.net/manual/fr/function.echo.php) – litelite

回答

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

首先,你不輸出什麼。你需要echo的東西。

其次,false的字符串表示形式是一個空字符串。 null同樣的事情。因此,即使使用echo,對於$a$b的某些值以及相同的JS語法錯誤,您也會得到空輸出。

您可以通過輸出琴絃固定輸出真,假和空:

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, 
]); ?>; 
0

請記住,您正在構建文本;使用「echo」以字符串的形式輸出正確的值。

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