2010-05-19 58 views
0

我想要的是能夠使我的CGI腳本根據腳本的調用發起的操作做不同的事情。查找調用CGI腳本的事件

例如,如果按下一個按鈕,數據庫將被清除。如果按下另一個按鈕,則會提交表單並將該數據添加到數據庫。

我應該做些什麼,比如將表單/按鈕的名稱添加到在jQuery中提交的POST數據的末尾,然後在腳本中將.pop關閉?

或者是否有一些其他數據已經在POST中發送過,我可以從FieldStorage得到這些數據,這些數據可以讓我知道腳本在被調用時應該執行的操作。

而如果我不使用JavaScript?我是否必須有一個隱藏的字段,以表單/按鈕的名稱提交?

或者是最好爲頁面上的每個按鈕使用不同的目標腳本?

回答

1

POST請求包含您提交表單的所有元素。所以,如果你有一個表單與幾個提交按鈕:

<form id="mytestform" target="/cgi-bin/script.py" method="POST"> 
    <input type="submit" name="ClearDB" value="Clear DB"/> 
    <input type="submit" name="TestDB" value="Test DB"/> 
    <input type="text" name="hostname" /> 
    </form> 

,那麼你會得到請求數據POST請求看起來像:ClearDB =清除%20DB &主機=每次提交使用「清除表單時間DB「按鈕。

基本上,要獲得您按下提交表單的按鈕的名稱,您只需要搜索該按鈕的名稱。另一種方法是使用按鈕名稱相同,但不同的值:

<form id="mytestform" target="/cgi-bin/script.py" method="POST"> 
    <input type="submit" name="action" value="Clear"/> 
    <input type="submit" name="action" value="Test"/> 
</form> 

然後你只需要檢查你的請求元素的值(在上述情況下這將是「行動」)。

在Python中,您只需使用FieldStorage.getfirst()方法確實獲得通過FieldStorage類獲得的值。

+0

謝謝你的精彩答案,正是我需要知道的! – Acorn 2010-06-15 17:12:01