Отправить массив HTML-форм в PHP с помощью CFHTTP

Я пытаюсь отправить форму с помощью 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 вернул точно такой же ответ! Когда я убираю квадратные скобки, он показывает мне просто переменную, а не массив...

Итак, если это работает, я думаю, мне нужно еще немного протестировать живой сайт и посмотреть, почему он не работает?


person JDot    schedule 17.01.2012    source источник


Ответы (2)


Я думаю, вам нужно немного отладить это, чтобы узнать, что происходит.

Возможно, cfhttpparam не может использовать одно и то же имя несколько раз или игнорирует стандарт HTML и запрещает такие символы, как [ или ] (это только предположение, в последнее время я не использовал cfhttp).

Чтобы отладить это, вы можете проверить, какие пост-данные фактически передаются в ваш PHP-скрипт, прочитав его:

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

Это вернет все пост-данные, которые были отправлены в ваш скрипт. Если вы сбросите его, вы можете узнать больше, что происходит.

В качестве альтернативы вы можете отладить это с помощью анализатора сети и проверки данных, которые передаются по сети.

person hakre    schedule 17.01.2012

ОК - получается, что способ сделать это в ColdFusion - самый очевидный способ:

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

Однако для программистов ColdFusion PHP чувствителен к регистру, когда речь идет об именах переменных...

Итак, хотя мой name="groupSelect[]" не работал, name="groupselect[]" работает отлично!

Хакре, спасибо, что указали мне правильное направление с предложением отладки, и, надеюсь, это поможет кому-то еще в будущем!

person JDot    schedule 17.01.2012