2012-12-05 112 views
8

Tôi có tệp php tạo biến và tôi muốn biến được đặt vào hàm javascript được gọi bằng onclick trên trang chính. Điều này có thể gửi từ PHP đến javascript không?Gửi biến PHP sang hàm javascript

+1

Có cần phải khác nhau sau mỗi lần nhấp (ví dụ: tập lệnh tạo ra thời gian phía máy chủ hiện tại)? Nếu có, bạn có thể cần [Ajax] (https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started). – apsillers

Trả lời

15

Bạn có thể làm như sau:

<script type='text/javascript'> 
    document.body.onclick(function(){ 
     var myVariable = <?php echo(json_encode($myVariable)); ?>; 
    }; 
</script> 
+0

Làm cách nào để chỉ định tệp php nào tôi nhận được biến từ? – user1879926

+1

Tôi nghĩ bạn cần học php nhiều hơn một chút. Thực hiện một hướng dẫn đơn giản sẽ cho bạn biết cách lặp lại nội dung. thử http://php.net/manual/en/tutorial.php –

+1

tại sao cần phải có json_encode ở đó? tại sao không chỉ đơn giản là echo $ myVariable? – TGeorge

1

Nếu tôi hiểu bạn một cách chính xác, bạn sẽ có thể làm điều gì đó dọc theo dòng trong các cách sau:

function clicked() { 
    var someVariable="<?php echo $phpVariable; ?>"; 
} 
+1

Bạn cần kết thúc bằng dấu chấm phẩy – mplungjan

+0

@ tên người dùng tbd Tôi có phải đặt toàn bộ tệp php trong dấu ngoặc vuông không? Nếu không, làm thế nào tôi có thể xác định tập tin php mà biến đó đến từ đâu? – user1879926

4

JavaScript của bạn sẽ phải được định nghĩa trong một file PHP-phân tích cú pháp.

Ví dụ, trong index.php bạn có thể đặt

<?php 
$time = time(); 
?> 
<script> 
    document.write(<?php echo $time; ?>); 
</script> 
4

Chỉ cần viết:

<script> 
    var my_variable_name = "<?php echo $php_string; ?>"; 
</script> 

Bây giờ là có sẵn như là một hoạt Javascript thay đổi theo tên của my_variable_name tại bất kỳ điểm nào bên dưới mã trên.

0

Bạn có thể chuyển giá trị PHP sang JavaScript. PHP sẽ thực thi phía máy chủ để giá trị sẽ được tính toán và sau đó bạn có thể lặp lại nó với HTML chứa javascript. Sau đó, javascript sẽ thực thi trong trình duyệt của máy khách với giá trị PHP được tính toán phía máy chủ.

<script type="text/javascript"> 
    // Do something in JavaScript 
    var x = <?php echo $calculatedValue; ?>; 
    // etc.. 
</script> 
1

Tùy chọn tuyệt vời là sử dụng jQuery/AJAX. Look at these examples và dùng thử trên máy chủ của bạn. Trong ví dụ này, trong FILE1.php, lưu ý rằng nó đang truyền một giá trị trống. Bạn có thể vượt qua một giá trị nếu bạn muốn, mà có thể giống như thế này (giả sử javascript VAR gọi usernamepassword:

data: 'username='+username+'&password='+password, 

Trong ví dụ FILE2.php, bạn sẽ lấy lại những giá trị như thế này:

$uname = $_POST['username']; 
$pword = $_POST['password']; 

Sau đó làm tra cứu MySQL của bạn và trả lại giá trị như sau:

echo 'You are logged in'; 

này sẽ phân phối thông điệp You are logged in đến su chức năng ccess trong FILE1.php và chuỗi thông báo sẽ được lưu trữ trong biến được gọi là "dữ liệu". Do đó, dòng alert(data); trong hàm thành công sẽ cảnh báo thông báo đó. Tất nhiên, bạn có thể echo bất kỳ thứ gì bạn thích, thậm chí một lượng lớn HTML, chẳng hạn như toàn bộ cấu trúc bảng.

Here is another good example để xem xét.

Cách tiếp cận là tạo biểu mẫu của bạn và sau đó sử dụng jQuery để phát hiện nút nhấn và gửi dữ liệu đến tệp PHP phụ thông qua AJAX. Các ví dụ trên cho thấy cách thực hiện điều đó.

Tệp PHP phụ nhận các biến (nếu có) và trả về một câu trả lời (bất cứ điều gì bạn chọn gửi). Phản hồi đó sau đó sẽ xuất hiện trong phần Thành công: trong cuộc gọi AJAX của bạn dưới dạng "dữ liệu" (trong các ví dụ này).

Mã jQuery/AJAX là javascript, vì vậy bạn có hai tùy chọn: bạn có thể đặt nó trong các thẻ <script type="text/javascript"></script> trong tài liệu PHP chính hoặc bạn có thể <?php include "my_javascript_stuff.js"; ?> ở cuối tài liệu PHP của mình.Nếu bạn đang sử dụng jQuery, đừng quên bao gồm thư viện jQuery như trong các ví dụ đã cho.

Trong trường hợp của bạn, có vẻ như bạn có thể phản chiếu khá nhiều ví dụ đầu tiên tôi đã đề xuất, không gửi dữ liệu và nhận phản hồi trong chức năng thành công AJAX. Dù bạn cần làm gì với dữ liệu đó, bạn phải làm bên trong hàm thành công. Có vẻ hơi kỳ lạ lúc đầu, nhưng nó hoạt động.

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