2012-07-25 20 views
6

thể trùng lặp:
transfer a Variable from php to jsLàm thế nào để có PHP boolean FALSE được đầu ra như FALSE chỉ

này có vẻ tầm thường. Tôi đang đặt giá trị của biến PHP là sai. Sau đó, sau khi xử lý một số tôi xuất ra một số biến JavaScript trong một kịch bản. Đây là mã

$a = true; 
$b = false; 
echo '<script type="text/javascript"> 
      var a = '.$a.'; 
      var b = '.$b.'; 
     </script>'; 

Khi kịch bản kết thúc tôi nhận được kết quả này:

var a = 1; 
var b = ; 

Vì vậy, tôi nhận được lỗi cú pháp trong JavaScript. Bây giờ câu hỏi là, làm cách nào để có những giá trị đó như các giá trị boolean đúng trong JavaScript?

đầu ra Dự định:

var a = true; 
var b = false; 

Tôi không muốn chuỗi như 'true' hoặc 'false' ... hoặc 1 và 0, nhưng boolean truefalse chỉ. Bất kỳ trợ giúp nào về vấn đề này, cũng với một số giải thích về lý do tại sao PHP hoạt động theo cách này?

+3

Nhìn vào logic của các phép toán luận Javascript http://www.quirksmode.org/js/boolean.html –

+0

Có những câu hỏi tương tự trên SO - http://stackoverflow.com/questions/4948663/php-get-bool-to-echo-false-when-false - http://stackoverflow.com/questions/2249235/is-there-a-way-to -get-true-false-values-from-a-boolean-in-php - http://stackoverflow.com/questions/11512705/print-false-in-php Và tất cả đều làm tương tự bằng cách sử dụng các chuỗi thay thế. – sascha

Trả lời

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

Tôi cho rằng, bạn không thể đơn giản lặp lại đúng/sai để nhận từ, Bạn cần phải chuyển đổi thành chuỗi.

+1

bên phải và khi bạn echo nó trong js, giá trị js sẽ giữ một boolean, không phải là một chuỗi bởi vì nó sẽ không echo với dấu ngoặc kép xung quanh nó – dano

1

Tôi nghi ngờ điều này sẽ làm việc và có thể được dễ dàng để thêm:

($val ? "true" : "false") 
4

Sử dụng json_encode.

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

Mã hóa dưới dạng JSON.

$ php 
<?php 
echo json_encode(true) . "\n"; 
echo json_encode(false) . "\n";    
true 
false 
1

Tôi sẽ sử dụng json_encode() ở phía php và JSON2 ở phía bên j để chuyển các biến. (json2 được bao gồm trong hầu hết các khung công tác 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> 

Làm việc cho các biến đơn lẻ, nhưng tôi khuyên bạn nên nhóm các biến của mình để chúng không làm ô nhiễm đối tượng toàn cầu của javascript.

3

Thêm một cách để làm điều đó sẽ được sử dụng var_export()

echo '<script type="text/javascript"> 
      var a = ', var_export($a), '; 
      var b = ', var_export($b), '; 
     </script>'; 
+0

đó thực sự là một thú vị, cảm ơn – Shades88

Các vấn đề liên quan