Значение Textarea не отображается на объекте $ _POST.

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

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

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

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

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

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

Чтобы исправить свой скрипт, выполните одно из следующих действий:

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

Вы говорите в своем вопросе $_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 .

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

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

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

Content-Type: application / x-www-form-urlencoded Content-Length: 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. Кнопки формы не активируют отправку в вашей форме.

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

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