0

假设我的表单如下所示:

<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.playindex.html。在那里,工作和娱乐的价值被用在一个特定的公式中。

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

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

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

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

4

4 回答 4

6

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>

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

于 2012-10-03T01:21:20.897 回答
2

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

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

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

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

方法=“发布”

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

于 2012-10-02T23:50:15.610 回答
0

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

于 2012-10-02T23:50:35.697 回答