【问题标题】:Request.Form sometimes returns the value of a checkbox, other times doesn'tRequest.Form 有时会返回复选框的值,有时则不会
【发布时间】:2009-01-12 19:06:05
【问题描述】:

有人知道这有什么问题吗?我有一些经典的 ASP 代码可以检查复选框的值,如下所示:

<!-- HTML page: page1.asp --->
<input id="useBilling" name="useBilling" value="Y" type="checkbox" />

在我的代码页中(我们称之为page2.asp):

' code

useBilling = Request.Form("useBilling")

' useBilling should be "Y" here

If useBilling = "Y" Then
    ' using billing info
Else
    ' not using billing info
End If

问题是有时,即使我选中复选框,它也会将一个空字符串传递给 Request.Form 并且正在执行错误的代码。我已经放置了一些 Response.Write 调用来跟踪它(这是 VBScript,请记住),有时它说值是“Y”,但后来当我检查条件中的值时,它是空的。

一直在绞尽脑汁想弄清楚为什么这到底是怎么回事,因为一切似乎都是正确的,只是 Request.Form 有时会获取值,有时不会,即使它已被检查。见鬼,有时我会通过注释掉执行代码来测试它,它会说值为“Y”,然后当我取消注释执行代码时,它又神秘地空了。

编辑: 奇怪的是,如果我在条件中包含一个 Response.End 标记,它将按我的预期运行,但是当我删除 Response.End 它不再找到复选框的值(返回空)即使在一分钟前(未注释 Response.End)它输出一条测试消息,上面写着“好的,复选框已选中”。随着 Response.End 注释掉,它说“未选中复选框”。

我什至尝试输出复选框的值(如果选中则应该是“Y”,如果没有选中则什么都没有)。而且,如果条件包含 Response.End,它肯定会输出“Y”,如果我删除 Response.End,它是空的。

【问题讨论】:

    标签: asp-classic


    【解决方案1】:

    一直在绞尽脑汁试图 弄清楚为什么这不是 工作,因为一切似乎 是的,有时只是 Request.Form 拿起价值,有时 没有,即使它被选中。

    不是一个直接的答案,但要完全清楚:如果未选中复选框,Request.Form("useBilling") 将总是返回一个空值。从您的“即使我选中复选框”的措辞中,我也不太确定您是否期望在未选中该值时出现值。从你的代码,我想你明白了。

    至于这个问题,尽管我使用 ASP 已有 10 多年了,但我从未见过这种情况(请杀了我。)这并不意味着你产生了幻觉,只是我没有看到它。有趣!

    我想知道您的 HTML(尤其是表单标签)是否格式错误。您是否有重叠标签或缺少结束表单标签或其他任何东西?

    当事情不正常时,我也非常好奇地看到 Request.Form 的输出,即:

    If useBilling = "Y" Then
      Response.Write "Cool, it works!"
    Else
      Response.Write "Something's weird. " & Request.Form
    End If
    

    【讨论】:

    • 这段代码到底去哪儿了?...你如何让它保持选中状态?
    【解决方案2】:

    这应该是正确的,如果您提交了一个表单并且未选中复选框,则它的值应该是一个空字符串的值——如果它被选中,它的值应该是“on”

    【讨论】:

    • 这是不正确的,至少对于 ASP 中的服务器端 Vbscript 而言。如果 HTML 复选框的 value="Y",则 Request.Form("useBilling") 在选中时将等于 "Y"(不是 "on"),并且在未选中时将为空白。
    • 这真是奇怪的家伙。我正在向旧页面添加内容,它测试 request.form("the_checkbox") = "1"。我无法让 if 语句阻止它,所以我打印了所有复选框的值,而我翻转的复选框的值为“on”。我在 IIS 7 仅供参考。我最后说:如果 chk ="1" 或 chk="on" 那么 response.write "do stuff"
    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 2013-12-21
    • 2016-09-24
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多