2011-12-12 81 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> 

這就是我到目前爲止,雖然沒有工作,但我認爲我需要使用ajax或其他東西,但我不知道該怎麼做。如何在JavaScript函數中使用php

謝謝

+1

簡單的講,你不能在一個javascript函數中使用PHP。但是,您可以使用PHP – konsolenfreddy

回答

22

你不能用Javascript運行PHP代碼。當用戶收到該頁面時,服務器將評估並運行所有PHP代碼,並將其取出。因此,例如,這將工作:

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

由於服務器將其評估爲這樣:

alert("Hello"); 

但是,你不能在PHP中使用它進行任何操作。

此:

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

只會被評估,以這樣的:

function Inc() 
{ 
    2 
} 

如果你wan't調用PHP腳本,你必須調用不同的頁面返回來自一組參數的值。

此,例如,將工作:

的script.php

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

的Javascript(jQuery的)(在另一頁):

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

這應該提醒10

祝你好運!

編輯:只是增加頁面上的數字可以很容易地在jQuery的就像這樣:http://jsfiddle.net/puVPc/

1

在上面給出的代碼

php的值賦給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> 

PHP和Javsacript結合在一起的一件事就是您無法將javascript值賦值給PHP值。您可以將PHP值分配給javascript變量。

+0

'eval(numeric)'生成Javascript代碼?我不相信那是屬於那裏的。 '數字++'應該就夠了。 – Dan

0

試試這個可以工作..

<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

我想你混淆服務器代碼與客戶端代碼。

JavaScript在客戶端從服務器(如網頁)接收到數據後在客戶端上運行。

PHP在發送數據之前在服務器上運行。

所以有兩種方式與JavaScript交互與PHP。

像上面那樣,您可以使用php以與使用php生成HTML相同的方式生成javascript。

或者您可以使用JavaScript的AJAX請求與服務器進行交互。服務器可以使用數據進行響應,JavaScript可以接收數據並對其執行操作。

我建議回到基礎知識並研究HTTP如何在服務器 - 客戶端關係中工作。然後研究服務器端語言和客戶端語言的概念。

然後帶着ajax的教程,你會開始得到這個概念。

祝你好運,谷歌是你的朋友。

0

儘管有一些評論,但在某些情況下,確實需要使用JavaScript訪問PHP函數(例如AJAX案例)。

在這些情況下,您可以使用mwsX庫在Javascript中使用PHP函數。

mwsX庫: https://github.com/loureirorg/mwsx

1

有運行在客戶端JavaScript(不是說服務器端JS這裏)PHP的方式。不知道這是不是一個好主意,但你可以。正如有些人指出,你必須記住,PHP在服務器上進行評估,然後作爲靜態東西返回給瀏覽器,然後他們將使用服務器添加的數據運行JavaScript。

你必須告訴服務器評估js文件作爲PHP文件,如果你運行的是Apache服務器,你可以用htaccess的文件這樣做:

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

此處瞭解詳情:

Parse js/css as a PHP file using htaccess

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

編輯:HTTP的頁面請求這一招使得與JS extensio文件n被php編譯器解析。 js文件中的所有php部分將被執行,並且具有添加的服務器數據的js文件將被傳遞給瀏覽器。

但是,OP使用html格式的文件(可能帶有php擴展名),沒有js文件,所以在這種特殊情況下,我不需要任何建議。

建議的JS解決方案是要走的路。如果變量需要存儲在服務器上,請使用ajax將它發送到那裏。

2

你在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

它適用於我的代碼,但我不認爲它的優雅。 – Julian

2

簡單地說,你的問題聽起來錯誤的,因爲JavaScript的變量需要呼應。

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

返回它:

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