Отправка массива HTML-форм в PHP с использованием CFHTTP - PullRequest
3 голосов
/ 17 января 2012

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

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

Ответы [ 2 ]

1 голос
/ 18 января 2012

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

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

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

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

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

1 голос
/ 17 января 2012

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

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

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

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

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

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

...