3

我正在尝试使用 CFHTTP 将表单提交到 PHP 页面 - 除了一个使用数组的表单字段外,一切都正常工作。

表单中的 HTML 代码是

<select name="groupselect[]" id ="groupselect" size="10" multiple="multiple">
<option value="26713">X-Men</option>
</select>

当我使用 CFHTTP 提交时,所有其他表单字段都已提交并被识别,但不是这个。

我努力了

<cfhttpparam type="formfield" name="groupSelect[]" value='26713'>
<cfhttpparam type="formfield" name="groupSelect" value='26713'>
<cfhttpparam type="formfield" name="groupSelect[0]" value='26713'>
<cfhttpparam type="formfield" name="groupSelect[]" value='Array ( [0] => 26713 )'>
<cfhttpparam type="formfield" name="groupSelect" value='Array ( [0] => 126713 )'>

我已经尝试过序列化,我已经尝试过 WDDX,我已经尝试了所有我能想到的并且没有运气。我在看什么?目前我只需要使用该字段提交一个值,但将来我可能需要提交多个值。

任何帮助将不胜感激。

第一次评论后编辑

我做了更多的调试,现在我更困惑了!当我手动提交表单时 $_Post 返回:

Array
(
    [groupselect] => Array
        (
            [0] => 26713
        )

)

然后我使用cfhttpparam type="formfield" name="groupSelect[]" value='26713'提交了表单,$_Post 返回了完全相同的响应!当我取出方括号时,它只显示一个变量,而不是一个数组......

所以,如果这有效,我想我需要在现场网站上进行更多测试,看看为什么它不起作用?

4

2 回答 2

1

我认为您需要对此进行一些调试才能真正了解发生了什么。

可能cfhttpparam是不能多次使用相同的名称,或者忽略了 HTML 标准并且不允许使用[or之类的字符](这只是一个假设,我最近没有使用 cfhttp)。

要调试它,您可以通过阅读它来检查哪些 post-data 实际传输到您的 PHP 脚本:

$postdata = file_get_contents("php://input");

这将返回已提交到您的脚本的整个后期数据。如果你转储它,你可能会发现更多发生了什么。

或者,您可以通过使用网络嗅探器并检查通过网络传输的数据来进行调试。

于 2012-01-17T10:20:17.530 回答
1

好的 - 事实证明,在 ColdFusion 中执行此操作的方法是最明显的方法:

<cfhttpparam type="formfield" name="groupSelect[]" value='26713'>

然而,对于 ColdFusion 程序员来说,PHP 在变量名方面是区分大小写的......

因此,虽然我的 name="groupSelect[]" 不起作用,但 name="groupselect[]" 完美运行!

Hakre,感谢您通过调试的建议为我指明了正确的方向,希望这对将来的其他人有所帮助!

于 2012-01-17T23:15:25.540 回答