3

CFHTTP を使用してフォームを PHP ページに送信しようとしています - 配列を使用している 1 つのフォーム フィールドを除いて、すべてが正常に機能しています。

フォームの 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 を試し、思いつく限りのことを試しましたが、うまくいきませんでした。私は何を見落としていますか?現時点では、このフィールドを使用して 1 つの値を送信するだけで済みますが、将来的には複数の値を送信する必要があるかもしれません。

どんな助けでも大歓迎です。

最初のコメントの後に編集

私はさらにデバッグを行いましたが、今ではもっと困惑しています! フォームを手動で送信すると、$_Post が返されます。

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

)

次に、cfhttpparam type="formfield" name="groupSelect[]" value='26713'を使用してフォームを送信すると、$_Post はまったく同じ応答を返しました。角かっこを外すと、配列ではなく変数だけが表示されます...

それで、それが機能している場合は、ライブサイトでさらにテストして、なぜ機能しないのかを確認する必要があると思います.

4

2 に答える 2

1

実際に何が起こっているのかを知るには、これを少しデバッグする必要があると思います。

cfhttpparam同じ名前を複数回使用できないか、HTML標準を無視して、[またはのような文字を許可していない可能性があります](これは単なる仮定であり、最近cfhttpを使用していません)。

これをデバッグするには、以下を読んで、どのポストデータが実際にPHPスクリプトに転送されているかを調べることができます。

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

これにより、スクリプトに送信されたポストデータ全体が返されます。あなたがそれを捨てるならば、あなたは何が起こっているかについてもっと知るかもしれません。

または、ネットワークスニファを使用して、ネットワークを通過するデータを検査することにより、これをデバッグできます。

于 2012-01-17T10:20:17.530 に答える
1

OK - ColdFusion でこれを行う方法が最も明白な方法であることがわかりました。

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

ただし、ColdFusion プログラマーにとって、PHP は変数名に関しては大文字と小文字を区別します...

したがって、私の name="groupSelect[]" は機能していませんでしたが、 name="groupselect[]" は完全に機能します!

ハクレ、デバッグの提案で私を正しい方向に向けてくれてありがとう、うまくいけば、これは将来誰かを助ける!

于 2012-01-17T23:15:25.540 に答える