2009-09-28 65 views
7

当我点击任何浏览器时,我丢失了表单中输入的所有数据,这些数据都是在下拉菜单和文本输入类型中输入的。单击浏览器上的后退按钮时丢失表单数据

这是服务器,浏览器还是编码问题?

感谢

+0

在ASP.NET中的数据将被检索,所以我猜你不使用ASP.NET? – Natrium 2009-09-28 06:26:36

+0

不使用PHP和MySQL – 2009-09-28 06:28:28

+0

这也适用于Windows Phone浏览器。试图找到解决方案。 – 2014-07-17 18:03:09

回答

9

它是一个浏览器问题。当后退按钮被点击时,浏览器的行为会有所不同 - 这种行为主要取决于用户的隐私设置。另外,大多数浏览器在按下通过HTTPS连接查看的页面时会自动重置表单,而不管它们是否具有HTTP连接的正常行为。另外,许多依赖AJAX的HTML表单不能正确地或一致地恢复以前的状态。

编辑----

既然你提到使用PHP和MySQL,假设你也在使用会话...浏览器不会预先填充表单当你点击后退按钮。 PHP会话支持的页面不会缓存在浏览器中,点击返回按钮返回上一页就像从一开始就再次打开该页面 - 大多数浏览器不会打扰恢复表单值。

+0

我发现Safari不会保留数据,但IE和FF不会。 – 2009-09-28 06:48:56

+0

是否正在使用会话正确,因此,在浏览器停止允许用户点击后,才能解决此问题。 – 2009-09-28 06:59:09

+0

是否有可能使用会话对我们有利? – 2009-09-28 07:00:29

1

您需要创建sticky forms的浏览器,以保持表单数据推压回去的时候。它很容易做到,检查链接中的搜索教程。

2

这适用于PHP和IE8。

不仅需要将缓存设置为私有缓存,而且必须删除4个缓存标头,并且只能使用PHP 5.3完成。

在PHP 5.2中,如果使用Zend Framework的setHeader()方法,则只能将4个标头设置为空白值。出于某种原因,在IE8上将4个标头值设置为空值是不够的。这里的代码为PHP 5.3:

header_remove("Expires"); 
header_remove("Cache-Control"); 
header_remove("Pragma"); 
header_remove("Last-Modified"); 
相关问题