【问题标题】:Is it possible to pass url parameters to HTML form having method=post?是否可以将 url 参数传递给具有 method=post 的 HTML 表单?
【发布时间】:2012-10-02 23:47:50
【问题描述】:

假设我的表单如下所示:

<form name="myform" method="post" action="index.html">
   <input type="hidden" name="work" id="work1" value="20">
   <input type="hidden" name="play" id="play1" value="10">
   <input type="submit" name="submit">
</form>

单击提交会将form.workform.play 发送到index.html。在那里,工作和娱乐的价值被用在一个特定的公式中。

现在,我需要将这个页面的链接发送给几个人 预定义的工作和娱乐价值。我试过这个:

    www.mysite.com/index.html?work=20&play=10

不幸的是,这不起作用。有什么办法可以做到这一点?

仅供参考,我使用的是 ColdFusion 服务器。

【问题讨论】:

  • 是 -- 如果这些值在服务器上被读取正确。
  • "this didn't work" 毫无意义-您使用了什么代码?您收到什么错误消息?
  • (您可能希望在适当的位置使用&lt;cfparam name="url.work" default="20" /&gt;value="#HtmlEditFormat(url.work)#" 的一些变体。)
  • 没有收到错误信息。 index.html 上的计算根本没有发生在传递的值上。

标签: html url post coldfusion parameters


【解决方案1】:

ColdFusion 有一个称为 URL 的范围和一个称为 FORM 的范围,分别用于每个 HTTP 方法 post/get。其他语言将它们混杂在一起。撇开优点/缺点不谈,一些 CFML 框架实际上会为您组合它们,并将它们作为“请求上下文”的一部分提供。

在这种情况下,您需要做的是检查您的值的 URL 和 FORM 范围。或者,您可以将表单方法更改为“获取”,以便您始终拥有 URL 变量而不是表单变量。这样,您将始终使用 URL.variables 而不是 Form.variable

cfparam> 为您设置默认值,以便变量存在。类似于 cfset>,但仅在缺少值时设置。

所以,在代码的顶部:

//this sets the url value to always be blank unless something is passed in
<cfparam name="url.work" default="" />
//this sets the form value to the url value by default
<cfparam name="form.work" default="#url.work#" />
//you should never actually output user content to the screen, but here it is
<cfoutput>#form.work#</cfoutput>

与往常一样,永远不要相信用户提供的内容,在将数据用于数据库或将内容发送回浏览器之前对其进行清理。

【讨论】:

    【解决方案2】:

    您遇到的问题是您尝试在 HTML 页面上使用 ColdFusion。 'index.html' 不会被 ColdFusion 解析,除非您专门更改了 Web 服务器以将 .html 文件定向到由 ColdFusion 解析。

    1. 将“index.html”更改为“index.cfm”
    2. 通过 URL 或 FORM 范围访问传入变量。如果表单已发布,则使用 FORM 范围(form.work 或 form.play)。如果表单是通过 url (?work=20&play=10) 完成的,则使用 URL 范围。

    【讨论】:

      【解决方案3】:

      是的,您通常可以传递查询字符串参数。它们只是构成所请求 URL 的一部分。

      服务器端框架是否使它们可用取决于框架。我希望大多数框架都会公开它们,即使请求是 POST 请求。在 ASP.Net 中可用。我不确定冷聚变。

      method="post"

      通知浏览器将表单变量作为 post 参数放入 HTTP 请求中。它并不排除您还包括查询字符串变量。

      【讨论】:

        【解决方案4】:

        url 中的变量称为GET 变量,ColdFusion 中必须有某种方式来检索它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-11
          • 1970-01-01
          • 2020-03-04
          • 1970-01-01
          • 2011-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多