【发布时间】:2010-04-21 18:46:59
【问题描述】:
实际上,有时,我的 Web 应用程序的用户一天要多次提交某个表单,该表单有大约十几个表单字段,其中一半是隐藏字段,而一半的 $_POST 数据根本不存在于处理脚本。请注意,不存在的字段位于表单的最底部。我知道这一点是因为这会引发致命错误,并且会向我发送一封包含帖子数据的电子邮件。
当然,我和我团队中的任何开发人员都无法重现该问题。
Flash 参与了这个过程,因为我使用了一个名为 Uploadify 的库来显示进度表。这是流程...有没有人有任何想法为什么一些帖子数据会被清除?
- 用户访问我正在使用的 CMS 中某个页面的编辑屏幕。
- 页面的记录 ID 作为隐藏值放入表单中。
- 用户单击 Uploadify 浏览按钮并选择一个文件(仅允许选择单个文件)。
- 用户点击我的表单的提交按钮。
- jQuery拦截表单提交动作,触发Uploadify开始上传,提交动作返回false(手动取消表单提交事件,让Uploadify接管)。
- Uploadify 上传到自定义流程脚本。
- Uploadify 完成上传并触发 Javascript 完成回调。
- Javascript 回调调用 $('#myForm').submit() 来提交表单。
这发生在多个浏览器(Firefox 3.5、3.6、Safari、Internet Explorer 7、8)和多个平台(Mac OS 10.5、10.6 和 Windows XP、7)上。
【问题讨论】:
-
可以发一下表单和服务器代码sn-ps吗?
-
你说你在表单底部有隐藏的输入。也许你有未关闭的 HTML 标签,浏览器会自动将它们从表单标签中抛出?这有点不可能,但请尝试验证您的页面。
-
我不认为这是由于未封闭的 HTML 标签造成的,因为此表单适用于包括我自己在内的许多用户。
-
@Chad Johnson:你在所有主流浏览器上都试过了吗?或者至少在 IE6、IE8 和 Firefox 3.5 中?
-
是的,我尝试在 IE7、IE8、FF3.5.8、FF3.6、Safari 4 和 Chrome 中重现。我的错误电子邮件显示,除了 Chrome 之外,所有这些浏览器都发生了错误。