2009-08-30 107 views
1

我要調用PHP函數上的一個按鈕按下時,有點像:調用JavaScript和PHP

<?php 
function output(){ 
    // do something 
} 
?> 

<input type="button" value="Enter" onclick="output()"/> 

我試圖製造類似:

<input type="button" value="Enter" onclick="test.php?execute=1"/> 

其中test.php的是當前頁面,然後通過php

<? if(isset(&execute)){ echo "Hello"; } ?> 

但它不起作用。

回答

0

PHP是服務器端,JavaScript是客戶端。所以我不確定這是否真的是你想要做的?

也許你可以解釋爲什麼你想專門調用一個PHP函數?

1

由於PHP在Web服務器上運行,並且客戶端上顯示了按鈕(在這種情況下爲JavaScript),所以您必須向服務器發出HTTP請求。最簡單的方法是使用form。不需要JavaScript。您可以添加JavaScript(儘管它應該是layered on top of a working non-JS version)。使用JavaScript在不離開頁面的情況下發出HTTP請求稱爲Ajax,並且通常可以通過XMLHttpRequest對象實現。有各種庫,如YUIjQuery,可以爲你做一些繁重的工作。

0

我從按鈕一派PHP函數,發現this question上webdeveloper.com

它不使用JavaScript。

0

這是你正在討論的PHP,而不是ASP.NET。在PHP中,沒有按鈕點擊事件這樣的事情。 PHP完全在服務器上運行,並且完全不瞭解客戶端事件。

您的第一次嘗試將無法正常工作,因爲PHP代碼僅在頁面首次加載時運行。當您調用JavaScript函數時,它不會運行。你的第二個例子不會工作,因爲JavaScript和PHP不能像這樣直接與彼此談話。嘗試從JavaScript直接調用PHP函數並不合理。請記住,PHP只能在服務器上運行。到了JavaScript可以運行的時候,PHP代碼早已完成其工作。

如果您想在單擊按鈕時執行某些操作,則必須明確地向服務器發回請求。你可以通過在CTphpnwb建議的形式發佈表單來做到這一點。請注意,這將重新加載頁面,您將不得不手動保存並恢復頁面狀態,例如重新填充輸入框。沒有內置的魔術可以爲你做到這一點。

或者,您可以獲取所有AJAXy並在JavaScript中執行POST。但是,您必須編寫JavaScript來發送請求並處理響應,並編寫服務器端PHP代碼來處理請求。這在單個頁面上做得有點尷尬。

來源:http://www.dreamincode.net/forums/showtopic72353.htm

+1

爲什麼這個投票下來?它說與其他帖子類似的東西只是稍微更詳細些 – jcoder 2009-08-30 12:36:25

+0

有些人是奇怪的生物。這就是我現在知道的。 – Tarik 2009-08-31 21:50:42

1

我認爲使用AJAX調用會做那種你所要求的。我不太瞭解PHP,但您可以使用下面的示例,並將您傳遞到服務器的數據添加到另一個變量中,以指示要在服務器上調用哪個函數。在服務器上,您可以添加一些「IF」語句,這些語句將根據傳入的名稱調用某個函數並返回結果。

這裏是你可以使用jQuery library作爲輔助做AJAX調用在JavaScript客戶端使用的是什麼:

<input type="button" value="Enter" onclick="output()"/> 
    <script type="text/javascript"> 
function output(){ 
    $.ajax({ 
     type: "POST", 
     url: "submit_data.php", 
     data: "username=" + "SomeUser" 
     + "&email=" + "[email protected]" 
        +  "&functionName=" + "theFunction1", 
     success: function(html){ 
      alert('sucess! Result is:' + html); 
     } 
    }); 

    } 
</script> 

,你可以使用如下代碼趕上JavaScript是傳遞數據在在這個例子中,你會想調用這個文件名作爲「submit_data.php」來匹配上面的JavaScript:

<?php 

    // Variables 

    $Username = $_POST['username']; 
    $Email = $_POST['email'];  
    $FunctionName = $_POST['functionName']; 

    //Add code here to choose what function to call and echo the result 
    // If $FunctionName equals 'theFunction1' then execute theFunction1 
    // If $FunctionName equals 'theFunction2' then execute theFunction2 

    echo "You called A Page!"; 

?> 

在這裏,我什麼都不做的「用戶名」和「電子郵件」簡單地抓住它,將它們存儲到保持變量中。但是,您可以在此輕鬆添加額外的功能,例如檢查要運行的功能的名稱。

+0

我喜歡你的答案,但它需要更新,指出你正在使用jQuery庫。 – ChaosPandion 2009-08-30 11:56:19

+0

謝謝...現在更新 – 7wp 2009-08-30 11:59:57

0

你不能直接從JavaScript調用PHP函數是這樣的:

  • PHP代碼在服務器
  • HTML/JavaScript的解釋在客戶端上執行。

一個HTML頁面已經生成併發送到客戶端(瀏覽器),沒有什麼更多的PHP可以做。

一個解決辦法是使用一個Ajax請求:

  • 你的onclick事件將調用JavaScript函數
  • 這個Javascript功能將推出一個Ajax請求:發送到服務器
  • 的請求服務器將執行一些PHP代碼
  • 然後,將執行結果返回給客戶端
  • 而且您可以在Javascript代碼中獲得該結果,並且根據服務器返回的內容採取行動。

有很多的解決方案做一個Ajax請求:

  • 可以重新發明輪子;沒有那麼複雜,我應該說 - 但看到下一個點
  • 如果已經使用了JavaScript框架,如jQuery,原型,......那些提供類/方法/函數來做Ajax請求

谷歌搜索有點會讓你地段的教程/例子,關於;-)