Textarea值未出现在$ _POST对象上

时间:2011-06-06 09:58:18

标签: php forms post textarea submit

伙计们,我正在摸着这个。

我有this website基本上包含一些由用户填写的表单。然后,用户可以以人类可读格式(pdf)或机器可读格式(xml)下载该信息,但我在提交文本框时遇到了一些问题。

我有一些,例如在描述部分,但是当我访问$ _POST ['Desc_Desc_desc']值时,即使我可以在textarea上看到内容,它也是空的。奇怪的是,当我使用firebug来检查元素时,它会将元素显示为没有内容..

任何人都可以找出造成这种奇怪行为的原因吗?

4 个答案:

答案 0 :(得分:2)

service_level_library.buttons.prepForSubmit中,textarea通过DOM cloneNode方法与表单的其余部分一起克隆。这会复制HTML元素属性,但不会复制DOM属性。 (有时DOM元素节点属性具有corresponding attribute,因此更新属性会影响该属性,这可能会使其看起来正在复制DOM属性。)

虽然textarea DOM objectsvalue property,但textarea HTML element没有相应的value属性,因此value属性不会公开属性。因此,当您克隆节点时,(空)value属性将被复制,保留元素的current value(可通过value属性访问)。

要修复脚本,请执行以下操作之一:

  1. 克隆后复制值。
  2. 在克隆之前,通过分配initial value属性或设置节点的文本内容,为textarea设置defaultValue。这是有效的,因为克隆节点的当前值将设置为其初始值,而textarea的深层副本将复制其文本内容(其初始值的来源)。
  3. 在克隆之前以编程方式将textarea替换为输入(尽管这比其他选项更复杂),

答案 1 :(得分:0)

您在问题$_POST['Desc_Desc_desc']中说,虽然在代码中我看到名称为Dep_desc且标识为Dep_Desc_Desc的textarea。然后你应该写$_POST['Dep_desc'],即name的{​​{1}}而不是<textarea>

此外,id没有textarea属性,因此在您的html中,您应该在开始标记和结束标记之间写入初始内容。

<强> HTML

value

<强> PHP

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

备注

echo "The content of the textarea is ".nl2br(htmlspecialchars($_POST['Dep_desc'])); :尊重html输出中的新行,将nl2br符号替换为\n

<br />:防止可能的XSS攻击。

答案 2 :(得分:0)

我使用firebug来分析通过

发送到您脚本的内容
document.getElementById('descriptionForm').submit()

正确发送表单数据

  

Content-Type:application / x-www-form-urlencoded Content-Length:113

     

Desc_Desc_name = SO&amp; Desc_Desc_keywords = overflow&amp; Desc_Desc_concept = http%3A%2F%2Fso.com&amp; Desc_Desc_desc = Stack + overflow

  1. 表单操作参数当前设置为“submit.action”,产生404。
  2. 表单按钮在表单标记之外定义。
  3. 表单按钮不会激活表单上的提交。
  4. 底线:表单未提交给目标收件人。

答案 3 :(得分:0)

我有一个类似的问题,但后来我发现在底部的某个地方,我已经重复使用同一个名称为另一个空的元素。这在var_dump,print_r上也消除了我所需的元素。这需要一段时间才能解决。