2011-04-27 98 views
5

我想用HTML按鈕單擊來運行PHP函數。單擊按鈕時運行PHP函數?

我可以調用PHP腳本是這樣的:

<form action="action.php" method="post"> 
    Name: <input type="text" name="txt"/> 
    <input type="submit" /> 
</form> 

但我不想要調用 「action.php的」。我只想調用我在這個頁面中定義的PHP函數。這可以做到嗎?

回答

7

我喜歡用的方法是混合jQuery/ajax調用一個面向對象的PHP類。

我有一個按鈕按下的是這樣一個jQuery監聽器/觸發器:

$('#buttonId').live('click', function() { 
    $.get('api.php?functionName=test&inputvar=something'); 

    return false; 
}); 

將調用api.php文件通過Ajax並阻止任何進一步的行動,如表單提交。

然後在PHP文件,你總是可以做一些基本的東西,如:

if ($_REQUEST['functionName'] == 'test') { 
    test(); 
} 

,或者如果你有巨大的類和動態輸入的很多,你可以做一些更有趣,如:

$functionName = $_REQUEST['functionName']; 
if (method_exists($myClassInstance, $functionName)) 
    $myClassInstance->$functionName(); 

有很多方法可以解決這個問題,但這些都是我的最愛。另一種選擇是爲這種活動而構建的Extjs框架,但如果您已經不熟悉這個項目並且該項目不是'龐大的',那麼我不會關心它自己。

最後,如果你需要得到響應從php文件後面如JSON結果,然後,而不是使用jQuery:$.get()功能,使用該功能$.getJSON

希望幫助:)

0

這不起作用。在用戶處理頁面時,PHP幾乎完成了處理。您必須使用AJAX將數據發送到服務器並檢索響應。

-2

你可以嘗試:

<form action="pageName.php/functionName" method="post"> 
Name: <input type="text" name="txt"/> 
<input type="submit" /> 
</form> 
+0

pageName.php?我的網頁是.html ...並且無論如何都無法工作。 – Voldemort 2011-04-27 04:17:55

0

你可以有以下方法:

1>使用AJAX來加載「action.php的」同在領域POST輸入到網頁中的數據和然後採取反應並將其放入體內;或者,

2>您無法使其工作,因爲PHP是一種服務器端編程語言,您嘗試使用PHP的HTML是客戶端編程語言。所以除了AJAX之外,沒有辦法讓它工作。

0

這有點複雜。你可以將表單提交給自己,檢查是否設置了post變量(如果是,那麼由於表單已經提交,頁面正在運行),或者你可以使用ajax。 第一個是更簡單的解決方案,第二個不需要重新加載頁面。選擇你的毒藥;)

看第一個解決方案的this,看第二個jquery's ajax functions

2

你需要在你的最後做到這一點。處理帖子並在你自己的action.php頁面中調用該函數。你也可以創建一個單獨的php頁面來調用在action.php中定義的函數。

0

你應該包括a.php只會在action.php的,例如:

action.php的:

include('a.php'); 
//Your codes 
如果你想例如

OK()在a.php只會功能,現在。 PHP中存在action.php的

1

你可以很容易地用jQuery做

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 



    <script type="text/javascript"> 
    function submitform(){ 
     $('#myForm').post("pageName.php", $("#myForm").serialize()); 
    } 
    </script> </head> 

<form action="pageName.php" method="post" id"myForm"> 
Name: <input type="text" name="txt"/> 
<input type="submit" /> 
</form>