0

我有一个简单的 HTML 页面,上面有一个隐藏字段。我显示了一个 DIV,其中有一个按钮供用户单击 - 当他们这样做时,我想更新主页上的隐藏字段。

目前,我的主 HTML 中有这个(在 CGI 文件中):

print "<td><input type=\"hidden\" id=\"mailUpdate\"></td></tr>";

我有这个(在 div 中的按钮的 onClick 访问的 javascript 模块中):

var updMail = document.getElementById("mailUpdate");
updMail.value = 1;

但是当我尝试阅读这个(在与上面相同的 CGI 文件中)时:

formData = cgi.FieldStorage()
doUpd = formData.getvalue("mailUpdate")
if (doUpd == 1):
    print "Maint button - doing update"

'doUpd' 永远不会获得任何价值。

希望这是有道理的——有什么想法吗?

4

2 回答 2

1

您的问题在于表达式(doUpd == 1):您正在将字符串 doUpd 与整数 1 进行比较。这将始终是False. 更改为(doUpd == '1'):应该可以解决您的问题。

此外,您需要将 添加name到输入中,以便它与表单一起出现。

print "<input type=\"hidden\" id=\"mailUpdate\" name=\"mailUpdate\"></td></tr>"
于 2012-05-31T17:42:39.593 回答
0

在不了解 CGI 的情况下,看起来您正在将服务器端代码与客户端事件混合在一起。对隐藏值的更好检查是添加如下一行:

var updMail = document.getElementById("mailUpdate");
updMail.value = 1;
alert(document.getElementById("mailUpdate").value);

如果您没有在服务器端收到值,可能是因为您的输入字段未包含在<form>元素中,然后 http 消息需要是表单提交,而不是简单的导航调用。

或者试试这个来验证实际存在什么值:

formData = cgi.FieldStorage()
doUpd = formData.getvalue("mailUpdate")
print doUpd
于 2012-05-31T17:44:57.360 回答