【问题标题】:How to check form submission ASP classic如何检查表单提交 ASP 经典
【发布时间】:2012-05-27 08:16:06
【问题描述】:

我正在 ASP 经典中设置一个表单,它会在提交后重新加载(操作自我)

但是这次显示的是之前提交的结果,那么如何检查是否已经提交了POST呢?

就像在 PHP 中一样:

if($_POST['submit']) {
  show results...
}

【问题讨论】:

    标签: forms post asp-classic


    【解决方案1】:

    您有多种选择:

    方法一 - 检查请求方法:

    If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        'Show Results...
    End If
    

    方法 2 - 在表单中添加一个带有值的隐藏字段,然后检查该值是否已发布:

    If Request.form("HiddenValue") = "1" Then
        'Show Results...
    End If
    

    方法 3 - 检查 request.form 集合是否包含项目:

    If Request.Form.Count > 0 Then
        'Show Results...
    End If
    

    方法 4 - 发布到查询字符串(即将 <form>action 设置为 ?post=yes

    If Request.QueryString("post") = "yes" Then
        'Show Results...
    End If
    

    选择哪一个?

    我的首选选项是方法 4——因为它在地址栏中很容易看到正在发生的事情——如果出于某种原因我想避免在 url 中显示这种详细程度,我倾向于使用选项 3,因为它很简单实施,不需要对源表格进行任何更改并且是可靠的。 至于其他两种方法:

    • 方法 1 – 如果我不这样做,我倾向于避免依赖服务器变量 对服务器有 100% 的控制权——没有真正的理由, 只是我倾向于遵循的一般习惯。
    • 方法 2 – 您可以将隐藏字段替换为始终包含的另一个字段 一个值。

    【讨论】:

    • 很好,但你会推荐哪一个?不同方法的比较如何?
    • @AnthonyWJones 是的,好点,答案已编辑以澄清一下。
    • FWIW,我会推荐方法 1。在您无法控制的服务器上进行奇怪的 FUD 是不合理的,如果您不能相信服务器会执行类似这样的基本操作,那么也许您应该找到一个不同的主持人。 REQUEST_METHOD 变量用于明确检测正在使用的 HTTP 方法。方法 2 和 4 要求开发人员用不必要的内容污染他们的代码,因此当有替代方案可用时应避免使用 IMO。方法 4 也是一种很好的方法,但缺乏方法 1 的目的明确性。
    • 我认为即使是 IIS 也可以正确获取 REQUEST_METHOD 变量。
    猜你喜欢
    • 2017-12-26
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多