微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Coldfusion 忽略已发布的 html 数组字段

如何解决Coldfusion 忽略已发布的 html 数组字段

我正在发布一个 html 表单,其中多个输入名称如下所示:left_impedance_TYMP[]

然而,当在冷融合中访问它们时,它会忽略空字段。

FORM["left_impedance_TYMP[]"]

检查 POST 请求似乎是正确的。

解决办法吗?

解决方法

当您有多个同名表单域时,无论是否带有括号,GETPOST 都会忽略空域值。

表格:

<form action="brackets_process.cfm" method="GET">
    <input type="text" name="foo" value="A"><br>
    <input type="text" name="foo" value="B"><br>
    <input type="text" name="foo" value="C"><br>
    <input type="text" name="foo" value="D"><br>
    <button>Submit</button>
</form>

处理:

<cfdump var="#url#" label="URL">
<p></p>
<cfdump var="#form#" label="FORM">

一个 GET 查询字符串 brackets_process.cfm?foo=A&foo=B&foo=C&foo=D

A POST brackets_process.cfm

如果给 foo[] 添加方括号,则查询字符串被编码并且结构键包含方括号。

brackets_process.cfm?foo%5B%5D=A&foo%5B%5D=B&foo%5B%5D=C&foo%5B%5D=D

POST 仍然是提交值的列表。

将 POST 数据转换为数组。

PHP 自动将以括号结尾的字段名称转换为数组。 ColdFusion 有一个 @Alex linked 的 application.cfc 设置 this.sameformfieldsasarray=true;。问题是它是一个全局设置,可能会改变大量现有功能。

启用该设置后,POST 会将值转换为数组。

A GET 坚持一个列表。因此,如果省略值 (B),则 url["foo[]'] 的值是一个包含 4 个元素的列表,其中第二个元素为空。

然而,从 POST 中留下值 (B) 会返回一个包含 4 个元素的数组,其中第二个值为空。

因此,您需要确定是否要进行影响所有当前功能的全局更改,或者是否可以添加一些条件逻辑来检查列表中的元素数量与预期的字段数量。

我过去编写过代码,将字段命名为 name="fieldName.#counterValue#" 之类的名称,然后解析字段名称以设置列表或数组中的位置值以说明空值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。