ColdFusion get方法

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)

  • @ s992 http://livedocs.adobe.com/coldfusion/8/htmldocs/arrayStruct_08.html#1126535 (2认同)