我有一个简单的HTML页面,上面有隐藏字段。我显示一个DIV,其上有一个按钮供用户点击 - 当他们这样做时,我想更新主页上的隐藏字段。
目前,我在我的主HTML(在CGI文件中)中有这个:
print "<td><input type=\"hidden\" id=\"mailUpdate\"></td></tr>";
我有这个(在一个javascript模块中,通过onClick访问div中的按钮):
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'永远不会得到任何价值。
希望这有意义 - 任何想法?
答案 0 :(得分:1)
您在表达式(doUpd == 1):
中发出谎言您正在将doUpd(字符串)与整数1进行比较。这将始终为False
。更改为(doUpd == '1'):
可以解决您的问题。
此外,您需要将name
添加到输入中,以便它会遇到表单。
print "<input type=\"hidden\" id=\"mailUpdate\" name=\"mailUpdate\"></td></tr>"
答案 1 :(得分: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