我一直致力于使用PHP和HTML表单的简单订购系统。我不确定发生了什么变化,但突然间,即使最简单的形式也不包括发送到脚本的表单数据中带有type =“text”的任何输入。到目前为止,我已经检查过输入都是唯一命名的,并且max_input_vars设置为1000,这比我需要的要高得多。即使使我的形式尽可能简单仍然失败。当我在Firefox中提交下面的表单(也在IE中测试)时,Firefox的开发者工具注释和操作中的Params选项卡下的表单数据部分正确显示,但first_name根本没有列出。我已经尝试将动作更改为几个不同的值,但它没有任何区别。
<h2>Place an Order</h2>
<form method="POST" action="">
<label>First Name</label>
<input type="text" name="first_name" maxlength="32">
{{first_name}}
<label>Comments</label>
<textarea name="comments" rows="3">{{comments}}</textarea>
<button type="submit" class="btn" name="action" value="confirm">Confirm Order</button>
</form>
我正在使用Twig进行模板化处理,但它对其他字段的工作正常,我看不出有什么理由导致表单不能POST文本输入字段。
如果我使用jQuery捕获提交事件并序列化表单,则所有值都会正确显示。
我确信这是非常明显的我缺少的东西,也许我需要更多的睡眠,但我无法理解为什么它不会提交文本输入。即使将电子邮件字段从type =“email”更改为type =“text”,也会从POSTed数据中省略它。将其更改回type =“email”会立即修复它。
有没有人有任何想法我可能做错了什么?
我刚刚通过添加几个字段并发布到一个只执行print_r($ _ POST)的全新脚本来测试它。它打印出数字字段,电子邮件和文本区域的值,但不打印文本输入字段。
如果我在表单外部有一个text类型的输入字段,无论该输入是否为自己的形式,它似乎都会中断。额外输入位于主要内容旁边的导航栏中。如果侧边栏包含文本输入,则主窗体将忽略所有文本输入。但它们包含在两个单独的形式中,所以我不明白为什么它们应该像那样互动。我会做更多的测试。我已经感受到它何时破裂的模式,但我现在正试图将其归结为一个确切的行为。
它始终断开(即POST中省略了主窗体中的文本输入),除非第二种形式的第一个文本输入中有一个值。如果第一个输入(在源中)是除文本以外的类型但第一个文本输入为空,它仍然会中断。只要源顺序中的第一个文本输入具有值,第二种形式中的哪个文本输入是第一个并不重要。这太荒谬了,任何人都可以对这种奇怪的行为有所了解吗?