2011-12-12 30 views
17
<html> 
    <?php 
     $num = 1; 
     echo $num; 
    ?> 
    <input type="button" 
      name="lol" 
      value="Click to increment" 
      onclick="Inc()" /> 
    <br> 
    <script> 
     function Inc() 
     { 
     <?php 
      $num = 2; 
      echo $num; 
     ?> 
     } 
    </script> 
</html> 

Đây là những gì tôi có cho đến nay, không hoạt động, tôi nghĩ tôi cần sử dụng ajax hoặc gì đó nhưng tôi không biết phải làm gì.Làm thế nào bạn có thể sử dụng php trong một hàm javascript

Cảm ơn

+1

nói đơn giản, bạn không thể sử dụng PHP trong một hàm javascript. Tuy nhiên, bạn có thể tạo mã Javascript bằng PHP – konsolenfreddy

Trả lời

22

Bạn không thể chạy mã PHP bằng Javascript. Khi người dùng nhận được trang, máy chủ sẽ đánh giá và chạy tất cả các mã PHP và lấy nó ra. Vì vậy, ví dụ, điều này sẽ làm việc:

alert(<?php echo "\"Hello\""; ?>); 

Bởi vì máy chủ sẽ đánh giá nó như thế này:

alert("Hello"); 

Tuy nhiên, bạn không thể thực hiện bất kỳ hoạt động trong PHP với nó.

này:

function Inc() 
{ 
<?php 
$num = 2; 
echo $num; 
?> 
} 

sẽ chỉ đơn giản là đã được đánh giá như sau:

function Inc() 
{ 
    2 
} 

Nếu bạn wan't để gọi một kịch bản PHP, bạn sẽ phải gọi một trang khác mà trả về một giá trị từ một tập các tham số.

này, ví dụ, sẽ làm việc:

script.php

$num = $_POST["num"]; 
echo $num * 2; 

Javascript (jQuery) (trên một trang khác):

$.post('script.php', { num: 5 }, function(result) { 
    alert(result); 
}); 

này nên cảnh báo 10

Chúc bạn may mắn!

Chỉnh sửa: Chỉ cần incrementing một số trên trang có thể được thực hiện dễ dàng trong jQuery như thế này: http://jsfiddle.net/puVPc/

1

Trong đoạn mã đưa ra ở trên

gán giá trị php để biến javascript.

<html> 
<?php 
$num = 1; 
echo $num; 
?> 
    <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()"> 
    <br> 
    <script> 
    var numeric = <?php echo $num; ?>"; //assigns value of the $num to javascript var    numeric 
    function Inc() 
    { 
    numeric = eVal(numeric) + 1; 
    alert("Increamented value: "+numeric); 
    } 
    </script> 
</html> 

Một điều trong sự kết hợp giữa PHP và Javsacript là bạn không thể gán giá trị javascript cho giá trị PHP. Bạn có thể gán giá trị PHP cho biến javascript.

+0

'eval (số)'? Tôi không tin rằng đó là thuộc về đó. 'số ++' là đủ. – Dan

0

Hãy thử điều này có thể làm việc ..

<html> 
    <?php $num = 1; ?> 
    <div id="Count"><?php echo $num; ?></div> 
    <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()"> 
    <br> 
    <script> 
    function Inc() { 
     i = parseInt(document.getElementById('Count').innerHTML); 
     document.getElementById('Count').innerHTML = i+1; 
    } 
    </script> 
</html> 
5

Tôi nghĩ bạn đang nhầm lẫn mã máy chủ với mã khách hàng.

JavaScript chạy trên máy khách sau khi đã nhận dữ liệu từ máy chủ (như trang web).

PHP chạy trên máy chủ trước khi nó gửi dữ liệu.

Vì vậy, có hai cách tương tác với JavaScript bằng php.

Như ở trên, bạn có thể tạo javascript bằng php theo cùng một cách mà bạn tạo HTML bằng php.

Hoặc bạn có thể sử dụng yêu cầu AJAX từ javascript để tương tác với máy chủ. Các máy chủ có thể đáp ứng với dữ liệu và javascript có thể nhận được điều đó và làm một cái gì đó với nó.

Tôi khuyên bạn nên quay lại các khái niệm cơ bản và nghiên cứu cách HTTP hoạt động trong mối quan hệ máy chủ-khách hàng. Sau đó nghiên cứu khái niệm về ngôn ngữ phía máy chủ và ngôn ngữ phía máy khách.

Sau đó, tham khảo hướng dẫn bằng ajax và bạn sẽ bắt đầu nhận khái niệm.

Chúc may mắn, google là bạn của bạn.

0

mặc dù một số nhận xét, tại một số trường hợp, thực sự cần thiết để truy cập các hàm PHP tại Javascript (ví dụ: các trường hợp AJAX).

Ở những trường hợp này, bạn có thể sử dụng thư viện mwsX để sử dụng các hàm PHP của bạn tại Javascript.

mwsX thư viện: https://github.com/loureirorg/mwsx

1

Có một cách để chạy php ở client-side javascript (không nói về js server-side ở đây). Không biết nếu đây là một ý tưởng hay, nhưng bạn có thể. Như một số người chỉ ra bạn phải ghi nhớ php được đánh giá trên máy chủ và sau đó trở về như là công cụ tĩnh cho trình duyệt sau đó sẽ chạy javascript với dữ liệu được thêm từ máy chủ.

Bạn phải nói với máy chủ để đánh giá các file js như file php, nếu bạn đang chạy một máy chủ apache bạn có thể làm điều này với một htaccess-file như thế này:

<FilesMatch "\.js$"> 
SetHandler application/x-httpd-php 
Header set Content-type "application/javascript" 
</FilesMatch> 

Thông tin thêm ở đây:

Parse js/css as a PHP file using htaccess

http://css-tricks.com/snippets/htaccess/use-php-inside-javascript/

Edit: Theo yêu cầu trang http thủ thuật này làm cho các tập tin với extensio js n được phân tích bởi trình biên dịch php. Tất cả các phần php trong tệp js sẽ được thực thi và tệp js có dữ liệu máy chủ được thêm sẽ được chuyển cho trình duyệt.

Tuy nhiên, OP sử dụng tệp được định dạng html (có thể với phần mở rộng php), không có tệp js, vì vậy trong trường hợp cụ thể này, không cần đề xuất của tôi.

Giải pháp js được đề xuất là cách để thực hiện. Nếu biến cần được lưu trữ trên máy chủ, hãy sử dụng ajax để gửi nó ở đó.

2

bạn sử dụng kịch bản trong php ..

<?php 

     $num = 1; 
     echo $num; 

    echo '<input type="button" 
      name="lol" 
      value="Click to increment" 
      onclick="Inc()" /> 
    <br> 
    <script> 
     function Inc() 
     {'; 
      $num = 2; 
      echo $num; 

     echo '} 
    </script>'; 
?> 
+0

nó hoạt động trên mã của tôi, nhưng tôi không nghĩ rằng nó thanh lịch. – Julian

2

đơn giản, câu hỏi của bạn nghe có vẻ sai vì các biến JavaScript cần phải được lặp lại.

<?php 
 
     $num = 1; 
 
     echo $num; 
 
     echo "<input type='button' value='Click' onclick='readmore()' />"; 
 
    \t \t echo "<script> function readmore() { document.write('"; 
 
     $num = 2; 
 
     echo $num; 
 
     echo "'); } </script>"; 
 
?>

-2

Đơn giản chỉ cần gửi lại:

<html> 
    <?php 
     $num = 1; 
     echo $num; 
    ?> 
    <input type="button" 
     name="lol" 
     value="Click to increment" 
     onclick="Inc()" /> 
    <br> 
    <script> 
     function Inc() 
     { 
      Return <?php 
      $num = 2; 
      echo $num; 
      ?>; 
     } 
    </script> 
</html> 
Các vấn đề liên quan