我想要的是能够使我的CGI脚本执行不同的操作,具体取决于启动调用脚本的操作。
例如,如果按下一个按钮,则清除数据库。如果按下另一个按钮,则会提交表单并将该数据添加到数据库中。
我应该做一些事情,比如将表单/按钮的名称添加到jQuery中提交的POST
数据的末尾,然后在脚本中.pop
将其删除?
或者是否已经在POST
中发送了一些我可以从FieldStorage
获得的其他数据,这些数据可以提供我需要的信息来决定脚本在调用时应该做什么?
如果我没有使用javascript怎么办?我是否必须使用表单/按钮的名称提交隐藏字段?
或者最好为页面上的每个按钮使用不同的目标脚本吗?
答案 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类获得的值。