假设我的表单如下所示:
<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.work
和form.play
发送至index.html。工作和游戏的价值在某个公式中使用。
现在,我需要向这个页面发送链接给几个人 工作和游戏的预定义值。我试过这个:
www.mysite.com/index.html?work=20&play=10
不幸的是,这不起作用。有什么方法可以实现这个目标吗?
仅供参考,我使用的是ColdFusion服务器。
答案 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解析。
答案 2 :(得分:0)
是的,您可以传递查询字符串参数。它们只是所请求URL的一部分。
服务器端框架是否使它们可用是依赖于框架的。我希望大多数框架都会暴露它们,即使请求是POST请求。可在ASP.Net中找到。我不确定Cold Fusion。
方法= “POST”
通知浏览器将表单变量作为post参数放在HTTP请求中。它不排除您也包括查询字符串变量。
答案 3 :(得分:0)
url中的变量称为GET
变量,ColdFusion中必须有一些方法来检索它们。