0

我正在努力发现为什么我的 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)

这些只是我的代码的一部分,如有必要,我可以提供整个脚本。问题是,它只能正确打印订购的螺栓数量,没有别的,如下面的屏幕截图所示 -

我希望我已经提供了足够的信息。有人可以帮我找到并解决问题吗?

谢谢,

4

2 回答 2

1

您上传到 2shared 的 HTML 中有多个表单(我相信每个输入一个)。HTML 中不能有嵌套表单。最有可能发生的情况是,当您认为您正在提交外部表单时,您实际上是在提交内部表单,其中定义的唯一输入是“qbolts”。您可能只需要删除form除最外层之外的所有标签,它应该可以工作。

有关更多信息,请参阅此问题

PS:如果你死心塌地使用cgi,你真的应该使用form.getfirst.

编辑:您qwash在表单中使用,但qwasher在脚本中使用。您也没有total___在表单中定义为输入。您可以使用type=hidden这些人,并确保同时更新输入和跨度中的值。或者更好的是,用python而不是javascript计算总数。

于 2013-04-29T21:39:28.687 回答
0

我想通了,这很简单,我觉得很愚蠢。form.getvalue 从名称而不是标签的 id 中获取值。我为所有表单数据分配了 ID,而不是名称。

于 2013-04-30T20:45:23.997 回答