阅读:2812
回复:0
history.back返回后输入框值丢失问题js使用history.back返回表单数据丢失的主要原因就是使用了session_start();的原因,该函数会强制当前页面不被缓存。
解决办法如下: 在你的 Session_start 函数后加入 header("Cache-control: private"); 注意在本行之前你的PHP程序不能有任何输出。 还有基于session的解决方法,在session_start前加上
但是要值得注意的是session_cache_limiter()方法要写在session_start()方法之前才有用;
支持页面回跳详解,session_cache_limiter()的使用详解
现在表单的填写,我们可以用AJAX对用户随时进行验证,进行友好的提示,但是在用户没有留意AJAX友好提示,提交了错误的表单,跳回原页,而填写的信息却全部丢失了。要支持页面回跳,有以下的办法:
session_cache_limiter('private,must-revalidate'); 但是要值得注意的是session_cache_limiter()方法要写在session_start()方法之前才有用;
在开发过程中,往往因为表单出错而返回页面的时候填写的信息都不见了,为了支持页面回跳,可以通过两种方法实现。 第一,使用Header方法设置消息头Cache-control 补充: Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。 关于表单刷新 问:为什么我在点击浏览器的后退按钮后,所有字段的信息都被清空了? 答:这是由于你在你的表单提交页面中使用了 session_start 函数。该函数会强制当前页面不被缓存。解决办法为,在你的 Session_start 函数后加入 header(双引号Cache-control: private双引号); 注意在本行之前你的PHP程序不能有任何输出。 补充:还有基于session的解决方法,在session_start前加上 可以在session_start();前加上 session_cache_limiter('private,max-age=10800'); |
|
|
您需要登录后才可以回帖,登录
|