“location.reload()”失去POST /会话数据? (F5 / Ctrl + R键

2019-07-29 16:43发布

我想创建一个按钮来重新加载页面,而不会丢失$_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(铬)或F5(火狐,IE9),浏览器显示一个警告,通知我,我试图再次提交表单。 如果我接受,它的工作原理。

我怎样才能重现这种浏览器的刷新与JavaScript命令? 或者是我的按钮的代码错了吗?

非常感谢您的帮助。

Answer 1:

尝试使用

location.reload(true);

这将执行“硬”刷新,而不仅仅是重建DOM还会再从服务器检索的任何资源。

你可以阅读更多在Mozilla开发者维基。

显然, location.reload()是相当于F5中的脚本,而Ctrl+F5 / Ctrl+R可以使用模拟location.reload(true)

此外,作为ThiefMaster提到的,你错过了;return false在你结束onclick陈述,或者你应该设置hrefjavascript:void 0 *,以防止浏览器下面的链接。

*或其他任何一段JavaScript代码返回undefined



Answer 2:

这应该在任何情况下,只要你对你贴到同一位置发生。 然而,这是常见的后重定向POST请求,以避免正是你正在尝试做的。

为什么你的代码不工作的原因是, href=""会导致一个GET请求到当前的URL。 使用href="#" ,以防止它加载一个“新”页面或添加return false; 在你结束onclick="..."代码。



Answer 3:

Ctrl + R刷新页面清除缓存。 我猜你正在使用Internet Explorer? 其他一些浏览器这样的表现,当你点击Ctrl + F5 ,但不与Ctrl + R

资料来源:
https://superuser.com/questions/205279/ctrlf5-vs-ctrlr-on-browsers
在按Ctrl-R浏览器的问题



文章来源: “location.reload()” loses POST/SESSION data? (F5 / Ctrl+R keeps data?)