是否可以将url参数传递给具有method = post的HTML表单?

时间:2012-10-02 23:47:51

标签: html url post coldfusion parameters

假设我的表单如下所示:

<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服务器。

4 个答案:

答案 0 :(得分:6)

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

在此实例中您需要做的是检查值的URL和FORM范围。或者,您可以将表单方法更改为“get”,这样您将始终拥有URL变量而不是表单变量。这样,您将始终使用URL.variables而不是Form.variable

cfparam&GT;为您设置默认值,以便变量存在。它就像cfset&gt;,但只在值丢失时才设置。

所以,在代码的顶部:

//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>

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

答案 1 :(得分:2)

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

  1. 将'index.html'更改为'index.cfm'
  2. 通过URL或FORM范围访问传入变量。如果表单是POSTED,则使用FORM范围(form.work或form.play)。如果表单是通过url(?work = 20&amp; play = 10)完成的,那么请使用URL范围。

答案 2 :(得分:0)

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

服务器端框架是否使它们可用是依赖于框架的。我希望大多数框架都会暴露它们,即使请求是POST请求。可在ASP.Net中找到。我不确定Cold Fusion。

  

方法= “POST”

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

答案 3 :(得分:0)

url中的变量称为GET变量,ColdFusion中必须有一些方法来检索它们。