2012-01-06 50 views
5

Cho đến nay tôi biết hai cách để chuyển các biến php sang javascript. Một là bằng cách sử dụngChuyển các biến PHP sang Javascript/jquery

<script> 
     $(document).ready(function() 
      phpvalue=$("#hiddeninput").val() 

     }) 
    </script> 

<input type="hidden" id="hiddeninput" value="phpvalue"> 

Và một trong những khác là bằng cách ví dụ như một nút và sử dụng onclick

<script> 
     function clickf(phpvalue) { 

     } 
    </script> 

<input type="submit" onclick="clickf(<?php echo phpvalue ?>)"> 

Tất cả trong số họ làm việc rất tốt nhưng:

  1. Có bất kỳ cách khác mà tôi đang mất tích?

  2. Cái nào là "tốt nhất"?

  3. Bất kỳ cơ hội nào tôi có thể sử dụng bên trong tập lệnh hoặc các j bên ngoài?

Trả lời

14
<script> 
    $(document).ready(function() 
     var phpvalue = <?php echo $var; ?> 
    }); 
</script> 
+0

Vì vậy mà trả lời câu hỏi thứ ba của tôi. Nhưng tôi có thể sử dụng điều này trong một js bên ngoài? Cảm ơn bạn – viper

+1

sẽ không hoạt động trong tệp .js, nhưng bạn có thể chỉ cần đặt tất cả các bạn javascript vào một tệp php và chuyển giá trị php của bạn sang biến javascript và nhập tệp php đó như bạn thường làm thành tệp js. Joeri

+0

Tôi nghĩ về điều đó nhưng điều này sẽ yêu cầu một tiêu đề như thế này phải không? 'header (Content-Type: text/javascript)' – viper

2
<script> 

var javascript_variable = <?php echo $php_variable; ?>; 

</script> 
1

Thay vì gán giá trị cho đầu vào ẩn, bạn chỉ có thể tạo ra JavaScript trực tiếp:

$script = <<<EOT 
<script> 
var phpvalue = $phpvalue; 
</script> 
EOT; 
echo $script; 
0

cho ví dụ trên bạn không cần phải sử dụng val bạn có thể sử dụng bất kỳ attr bạn thích. Ví dụ

phpvalue="myvalue" 

thì trong thời hạn jquery

$("#hiddeninput").attr("phpvalue"); 
4

Giống như những người khác đã trả lời, chỉ cần đặt một thẻ PHP bất cứ nơi nào bạn sẽ đặt giá trị JS, như var foo = <?= $php_value ?>; hoặc var foo = <?php echo $php_value ?>;.

Nếu bạn muốn sử dụng điều này trong tệp JavaScript bên ngoài, bạn phải đảm bảo tệp .js được phân tích cú pháp bằng PHP. Nếu đây không phải là tùy chọn cho bạn (ví dụ: máy chủ lưu trữ của bạn không cho phép), tôi khuyên bạn nên đặt các giá trị trong thẻ <script> bên trong <head> và sau đó chỉ tham chiếu các biến số từ JavaScript bên ngoài của bạn. Trong trường hợp đó, tôi sẽ đề nghị bạn đặt tên chúng là var app_vars = { foo: <?= $bar ?> } để không làm lộn xộn đối tượng toàn cầu.

Một cách khác là truy xuất các giá trị thông qua Ajax. Nhưng khả năng tồn tại của phương pháp này phụ thuộc vào trường hợp sử dụng của bạn.

Và gợi ý khác: nếu bạn muốn vượt qua nhiều biến hoặc mảng, có của JSON nướng vào PHP kể từ phiên bản 5.2:

<?php 
    $my_complex_var = array(
     'array' => array('foo', 'bar'), 
     'val2' => 'hello world' 
    ); 
?> 
<script> 
    var my_complex_js_var = <?= json_encode($my_complex_var) ?> 
</script> 
+0

Điều đó rất tốt đẹp cảm ơn bạn. Một câu hỏi mặc dù tại sao tôi cần phải không gian tên var? Tôi không hiểu! – viper

+0

Cũng như đã đề cập trước đó bởi @garvey tôi có thể sử dụng .php thay vì .js phải không? – viper

+0

Không gian tên giúp bạn giữ cho đối tượng toàn cầu của bạn sạch sẽ. Và giữ sạch GO chỉ là thực hành tốt nhất cho hàng ngàn lý do. Nếu điều này không có ý nghĩa gì đối với bạn, tôi khuyên bạn nên xem một số cuộc nói chuyện của Douglas Crockford. Chỉ cần thực hiện tìm kiếm Google Video cho tên của anh ấy. Và thực sự bạn chỉ có thể sử dụng '.php' làm phần mở rộng của tệp và bạn có thể trộn JS và PHP trong đó. Hoặc, thậm chí tốt hơn, '.js.php'. Bằng cách này bạn vẫn sẽ biết những gì đang xảy ra trong các tập tin này. –

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