use*_*749 3 php coldfusion coldfusion-9
我将一个变量值从一个http url发送到另一个cfm页面,但我不知道如何在另一个页面上获取该值.在php中我们使用$_GET['variable']; 我不确定ColdFusion中的等价物是什么.
Ken*_*ler 13
ColdFusion可以像访问PHP一样访问这些变量:
PHP:
$foo = $_GET['variablename'];
$bar = $_POST['variablename'];
Run Code Online (Sandbox Code Playgroud)
CFSCRIPT:
foo = URL['variablename'];
bar = FORM['variablename'];
Run Code Online (Sandbox Code Playgroud)
CFML:
<cfset foo = URL['variablename']>
<cfset bar = FORM['variablename']>
Run Code Online (Sandbox Code Playgroud)
编辑:讨论表单范围案例不敏感性和变通方法
ColdFusion会(有帮助吗?)将所有表单字段名转换为表单范围中的大写字母.在重复字段名的情况下,多个值将合并为一个逗号分隔值.当您无法控制表单本身时,这可能会导致挫败感.
鉴于形式:
<form name="main" action="handler.cfm" method="post">
<input type="text" name="conFUSion" value="abc" />
<input type="text" name="CONfusion" value="def" />
<input type="submit" name="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
接收页面上的表单范围如下所示:

但您可以使用gethttprequestdata().content直接访问原始表单保留的字段和值,如发布:
conFUSion=abc&CONfusion=def&Submit=Submit
由于ColdFusion结构不区分大小写,因此我们不能简单地将此字符串解析为常规结构.相反,我们可以转向java.util.HashMap,这非常像ColdFusion结构,但确实保留了大小写:
arFormscope = gethttprequestdata().content.split('&');
cs_form = createobject('java','java.util.HashMap').init();
for( i=1; i<=arraylen(arFormscope); i++ ){
arElement = arFormscope[i].split('=');
key = arElement[1];
value = arElement[2];
cs_form[key] = value;
}
Run Code Online (Sandbox Code Playgroud)
转储cs_formhashmap,我们得到:

......最后:
cs_form['CONfusion']; // def
cs_form['conFUSion']; // abc
cs_form['CONFUSION']; // Error, undefined in java.util.HashMap
Run Code Online (Sandbox Code Playgroud)