“location.reload()”丢失了POST / SESSION数据? (F5 / Ctrl + R保存数据?)

时间:2012-06-02 09:22:57

标签: javascript session browser-refresh

我想创建一个按钮来重新加载页面而不会丢失$_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命令重现这种浏览器刷新?或者我的按钮代码错了?

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:9)

尝试使用

location.reload(true);

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

You can read more at the Mozilla Developer wiki.

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

此外,正如ThiefMaster所提到的,您在;return false声明的末尾遗失了onclick,或者您应该将href设置为javascript:void 0 * 阻止浏览器关注链接。

*或任何其他返回undefined

的JavaScript

答案 1 :(得分:2)

只要您位于发布到的同一位置,就会发生这种情况。但是,在POST请求之后重定向是很常见的,以避免您正在尝试执行的操作。

您的代码无法正常工作的原因是href=""将导致对当前网址的GET请求。使用href="#"来阻止它加载&#34; new&#34;页面或在return false;代码的末尾添加onclick="..."

答案 2 :(得分:0)

Ctrl + R刷新页面清除缓存。我想你正在使用Internet Explorer?当您点击Ctrl + F5时,其他一些浏览器的行为与此类似,但Ctrl + R

则不行

来源:
https://superuser.com/questions/205279/ctrlf5-vs-ctrlr-on-browsers
Browser issue in Ctrl-R