"location.reload()"丢失开机自检/会话数据?(F5 / Ctrl + R保留数据?



我想创建一个按钮来重新加载页面而不会丢失$_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 中的浏览器问题

最新更新