我有this website基本上包含一些由用户填写的表单。然后,用户可以以人类可读格式(pdf)或机器可读格式(xml)下载该信息,但我在提交文本框时遇到了一些问题。
我有一些,例如在描述部分,但是当我访问$ _POST ['Desc_Desc_desc']值时,即使我可以在textarea上看到内容,它也是空的。奇怪的是,当我使用firebug来检查元素时,它会将元素显示为没有内容..
任何人都可以找出造成这种奇怪行为的原因吗?
答案 0 :(得分:2)
在service_level_library.buttons.prepForSubmit
中,textarea通过DOM cloneNode
方法与表单的其余部分一起克隆。这会复制HTML元素属性,但不会复制DOM属性。 (有时DOM元素节点属性具有corresponding attribute,因此更新属性会影响该属性,这可能会使其看起来正在复制DOM属性。)
虽然textarea DOM objects有value
property,但textarea HTML element没有相应的value
属性,因此value
属性不会公开属性。因此,当您克隆节点时,(空)value
属性将被复制,保留元素的current value(可通过value
属性访问)。
要修复脚本,请执行以下操作之一:
defaultValue
。这是有效的,因为克隆节点的当前值将设置为其初始值,而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
底线:表单未提交给目标收件人。
答案 3 :(得分:0)
我有一个类似的问题,但后来我发现在底部的某个地方,我已经重复使用同一个名称为另一个空的元素。这在var_dump,print_r上也消除了我所需的元素。这需要一段时间才能解决。