我正在努力发现为什么我的CGI python脚本只打印从订单表单获得的一个值。我在order.html上有一个表单,其中包含以下开头标记 -
<form name="cInformation" method="post" action="http://csusap.csu.edu.au/cgi-pub/bbuckl05/order.cgi" onsubmit="return validate()">
我不会发布它的内容,因为它非常广泛,但我可以保证它的所有输入字段都具有我在.cgi脚本中使用的一致名称。我的.cgi脚本获取了一个值列表 -
#!/usr/bin/env python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Order quantities, data from fields
bolt_quantity = form.getvalue('qbolt')
nut_quantity = form.getvalue('qnut')
washer_quantity = form.getvalue('qwasher')
bolt_cost = form.getvalue('total1')
nut_cost = form.getvalue('total2')
washer_cost = form.getvalue('total3')
total_cost = form.getvalue('totalcost')
之后,它试图发布它们 -
# Prints the customer's order information
print "<h4><p>Order Information:\n</h4>"
print "Quantity of bolts ordered: %s (%s)" % (bolt_quantity, bolt_cost)
print "<br/>Quantity of nuts ordered: %s (%s)" % (nut_quantity, nut_cost)
print "<br/>Quantity of washers ordered: %s (%s)" % (washer_quantity, washer_cost)
print "<br/><br/>Total Cost: %s" % (total_cost)
这些只是我的代码的一部分,如果有必要,我可以提供整个脚本。问题是,它只能正确打印订购的螺栓数量,而不是其他,如下面的屏幕截图所示 -
我希望我已经提供了足够的信息。有人可以帮我找到并解决问题吗?
谢谢,
答案 0 :(得分:1)
您上传到2shared的HTML中有多个表单(我相信每个输入一个)。您无法在HTML中嵌套表单。最有可能发生的事情是,当您认为自己提交外部表单时,您确实提交了内部表单,其中唯一定义的输入是qbolts&#39;。您可能只需删除除最外层以外的所有form
标记,它应该可以正常工作。
有关详细信息,请参阅this question。
PS:如果您在使用cgi
时已经死定,则应该使用form.getfirst
。
修改:您在表单中使用了qwash
,但在脚本中使用了qwasher
。您也不必将total___
定义为表单中的输入。您可以对这些人使用type=hidden
,并确保同时更新输入和跨度中的值。或者更好的是,计算python中的总数而不是javascript。
答案 1 :(得分:0)
我明白了,这很简单,我觉得很蠢。 form.getvalue从名称中获取值而不是标记的id。我为所有表单数据分配了id,而不是名称。