带方括号的表格输入元素

eri*_*rik -1 coldfusion coldfusion-9

在我的表单中,我有一个带方括号的元素:

<input name="bodyIDList[]" id="bodyIDList" value="">
Run Code Online (Sandbox Code Playgroud)

当我将此页面传递给ColdFusion时,如何将其视为表单变量?作为列表还是数组?

Pet*_*ton 5

不知道你为什么要问这个问题 - 创建一个测试并自己找出它需要几秒钟的时间!

测试它的代码很简单:

<cfoutput>
    <form action="#CGI.SCRIPT_NAME#" method="post">
        <input name="bodyIDList[]" id="bodyIDList" value="">
        <button type="submit">go</button>
    </form>
</cfoutput>

<cfdump var=#Form# />
Run Code Online (Sandbox Code Playgroud)

运行它,按go,看看转储.


但是,既然我们现在已经有了这个问题,我不妨给出一个完整的答案,因为实际上有一件有趣的事情需要注意......

如果您在Adobe ColdFusion 9(或任何其他版本的CF)上运行该代码,您将获得一个名为bodyIDList[]- 即Form['bodyIDList[]']- 的单个值的字符串变量.

如果您有多个这些字段,您仍然会得到一个带逗号分隔列表的字符串.

由于它在变量名中包含括号,因此无法使用点符号访问此字段.

以上所有内容也适用于最新的Open BlueDragon.

但是,如果你使用Railo,你会得到一个不同的行为(从PHP复制),它会给你一个名为的变量bodyIDList- 即没有括号的Form ['bodyIDList'] - 其中包含一个数组

如果您有多个这些字段,您将获得一个包含多个元素的数组.

目前没有管理员配置选项可以使Railo与ACF兼容,因此:
如果您正在编写跨引擎CFML代码,请不要使用带括号的表单字段名称.
(好吧,除非你知道并愿意处理这些差异).