【发布时间】:2015-10-08 07:40:40
【问题描述】:
我有一个 HTML 表单,它使用隐藏输入来管理 PHP 处理脚本中的行为。
在浏览器测试中我发现该表单在 Chrome 和 IE 中运行良好,但在 Firefox 中存在问题。
Firefox 浏览器(使用 39.0)删除隐藏的输入值。他们完全消失了,只剩下value=""。这反过来又弄乱了我的 PHP。
我已经广泛搜索了有关此问题的信息,但一无所获。
为什么 Firefox 会删除(或忽略)我的 HTML 表单中隐藏的输入值?
在原始文件中
在 Chrome 开发者工具中
在 Firefox 检查器中
更新(基于发布的 cmets)
浏览器测试。该表单已在所有主要浏览器桌面和移动版本上进行了测试。该表单可在所有浏览器(包括 Firefox 移动版)上完美运行,但无法在 Firefox 桌面版 (39.0) 中完全正常运行,因为隐藏的输入值已被删除。
更新 2
重新启动并重新安装 Firefox 未能解决问题。
更新 3
已删除所有客户端脚本并检查 HTML 验证(无错误)。问题仍然存在。
更新 4
这似乎与 Firefox 缓存数据和处理 POST 请求的方式有关。
当我“清除所有历史记录”(包括 cookie、缓存等)时,表单会按预期工作......一次。
在所有后续提交中,value 属性的值为空,并且没有数据传递给 PHP,直到我再次“清除所有历史记录”。
这在其他浏览器中不会发生。
【问题讨论】:
-
对不起,但我怀疑 FireFox 真的会像这样删除输入字段值。正如您自己所说:互联网上没有任何证据。所以也许你应该寻找其他解释......也许有一些客户端脚本会改变标记?也许有一些服务器端脚本会对浏览器识别做出反应?属性顺序也发生变化的事实表明,内容已通过中间的某些处理步骤重新创建
-
这怎么可能是“搞砸了你的 php”? php 是脚本服务器端;它的运行独立于任何浏览器解释。这些工具无关紧要。
-
@nomistic 它可能会弄乱 PHP,因为它期望该字段存在。当一个字段为空时,它根本不会发送到服务器。我可以看到这是一个问题。
-
我检查了 39 - 一切正常。这是所有的代码?您可以在
jsfiddle.net? 中重现此行为? -
@Anonymous 很抱歉有所不同,但此代码的解释是客户端的,并且会在代码发送到浏览器之后发生。正如 arkascha 所说,某些客户端工具可能正在发生一些事情。它不可能是 php。
标签: php html forms firefox hidden-field