找出调用CGI脚本的事件

时间:2010-05-19 11:02:39

标签: jquery python cgi

我想要的是能够使我的CGI脚本执行不同的操作,具体取决于启动调用脚本的操作。

例如,如果按下一个按钮,则清除数据库。如果按下另一个按钮,则会提交表单并将该数据添加到数据库中。

我应该做一些事情,比如将表单/按钮的名称添加到jQuery中提交的POST数据的末尾,然后在脚本中.pop将其删除?

或者是否已经在POST中发送了一些我可以从FieldStorage获得的其他数据,这些数据可以提供我需要的信息来决定脚本在调用时应该做什么?

如果我没有使用javascript怎么办?我是否必须使用表单/按钮的名称提交隐藏字段?

或者最好为页面上的每个按钮使用不同的目标脚本吗?

1 个答案:

答案 0 :(得分: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 = Clear%20DB&amp; hostname =每次使用“Clear 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>

然后你只需要检查你得到的请求元素的值(在上面的例子中它将是“action”)。

在Python中,您只需要使用FieldStorage.getfirst()方法获取通过FieldStorage类获得的值。