我想创建一个按钮来重新加载页面而不会丢失$_POST
数据和$_SESSION
。
在网络上,我找到了这段代码:
onclick="document.location.reload();"
这是我的按钮的代码:
<a class="button" href="" style="font-size: 0.7em; padding: 5px 10px;" onclick="document.location.reload();">Recharger la page</a>
但是当我单击该按钮时,我丢失了$_POST
数据和$_SESSION
.
如果我尝试使用键盘命令 Ctrl+R (Chrome) 或 F5(Firefox、IE9),浏览器会显示一条警报,通知我再次尝试提交表单。如果我接受,它就有效。
如何使用 JavaScript 命令重现这种浏览器刷新?还是我的按钮代码错误?
非常感谢您的帮助。
尝试使用
location.reload(true);
这将执行"硬"刷新,不仅重建 DOM,而且还从服务器重新检索任何资源。
您可以在 Mozilla Developer wiki 上阅读更多内容。
显然,location.reload()
相当于脚本中的F5
,而Ctrl+F5
/Ctrl+R
可以使用location.reload(true)
进行模拟。
此外,正如 ThiefMaster 提到的,您在onclick
语句的末尾缺少;return false
,或者您应该将href
设置为 javascript:void 0
* 以防止浏览器点击链接。
*或任何其他返回undefined
的 JavaScript
同一位置,在任何情况下都应该发生这种情况。但是,通常会在 POST 请求后重定向以避免您尝试执行的操作。
代码不起作用的原因是href=""
将导致对当前 URL 的 GET 请求。使用 href="#"
防止它加载"新"页面或在 onclick="..."
代码末尾添加return false;
。
Ctrl + R
刷新页面并清除缓存。我猜你正在使用Internet Explorer?当您点击时,其他一些浏览器的行为是这样的 Ctrl + F5
,但不是Ctrl + R
来源:
https://superuser.com/questions/205279/ctrlf5-vs-ctrlr-on-browsersCtrl-R 中的浏览器问题