Значение текстовой области не отображается в объекте $ _POST - PullRequest
0 голосов
/ 06 июня 2011

Ребята, я почесал голову вокруг этого.

У меня есть этот сайт , который в основном содержит несколько форм, которые заполняет пользователь. Затем пользователь может загрузить эту информацию в удобочитаемом для человека формате (pdf) или в машиночитаемом формате (xml), но у меня возникла небольшая проблема с отправкой текстовых полей.

У меня есть несколько из них, например, в разделе описания, но когда я получаю доступ к значению $ _POST ['Desc_Desc_desc'], оно пустое, хотя я могу видеть содержимое текстовой области. Странно то, что когда я использую firebug для проверки элемента, он показывает элемент, как будто у него нет содержимого ..

Кто-нибудь может понять, что вызывает это странное поведение?

Ответы [ 4 ]

2 голосов
/ 06 июня 2011

В service_level_library.buttons.prepForSubmit текстовая область клонируется вместе с остальной частью формы методом DOM cloneNode. Это копирует атрибуты HTML-элемента, но не свойства DOM. (Иногда свойства узла элемента DOM имеют соответствующий атрибут , поэтому обновление свойства влияет на атрибут, что может создать впечатление, что свойства DOM копируются.)

В то время как объекты DOM textarea имеют свойство value , HTML-элемент textarea не имеет соответствующего атрибута value, поэтому * Свойство 1017 * не имеет атрибута. Таким образом, при клонировании узла (пустой) атрибут value копируется, оставляя текущее значение элемента (доступное через свойство value).

Чтобы исправить ваш скрипт, выполните одно из:

  1. Скопировать значение после клонирования.
  2. Установите начальное значение для текстовой области, либо присвоив свойству defaultValue, либо установив текстовое содержимое узла перед клонированием. Это работает, потому что текущее значение клонированного узла будет установлено в его начальное значение, а глубокая копия текстовой области скопирует его текстовое содержимое (источник его начального значения).
  3. Программно заменить текстовую область вводом перед клонированием (хотя это будет более сложным, чем другие варианты),
0 голосов
/ 30 ноября 2015

У меня была похожая проблема, но позже я узнал, что где-то внизу я использовал то же имя для другого элемента, который был пустым. Это уничтожило мой обязательный элемент в var_dump, print_r, а также. Потребовалось время, чтобы это понять.

0 голосов
/ 06 июня 2011

Я использовал firebug для анализа того, что отправляется в ваш скрипт

document.getElementById('descriptionForm').submit()

Данные формы отправляются правильно

Тип содержимого: application / x-www-form-urlencoded Длина содержимого: 113

Desc_Desc_name = SO & Desc_Desc_keywords = переполнение & Desc_Desc_concept = http% 3A% 2F% 2Fso.com & Desc_Desc_desc = Стек + переполнение

  1. В настоящее время для параметра действия формы установлено значение "submit.action", что приводит к значению 404.
  2. Кнопки формы определены вне вашего тега формы.
  3. Кнопки формы не активируют отправку в вашей форме.

Итог: форма не отправляется предполагаемому получателю.

0 голосов
/ 06 июня 2011

Вы говорите в своем вопросе $_POST['Desc_Desc_desc'], хотя в коде я вижу текстовую область с именем Dep_desc и id Dep_Desc_Desc. Затем вы должны написать $_POST['Dep_desc'], то есть name из <textarea> вместо id.

Кроме того, textarea s не имеют атрибута value, поэтому в вашем html вы должны записать начальный контент между открывающим и закрывающим тегом.

HTML

<textarea name="Dep_desc" id="Dep_Desc_Desc">Initial content</textarea>

PHP

echo "The content of the textarea is ".nl2br(htmlspecialchars($_POST['Dep_desc']));

примечания

nl2br: учитывайте новые строки в выводе html, заменяя символ \n на <br />.

htmlspecialchars: предотвращение возможных XSS атак.

...