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

Zor*_*zyd 8 javascript session browser-refresh

我想创建一个按钮来重新加载页面而不会丢失$_POST数据$_SESSION.
在网络上,我发现了这段代码:

onclick="document.location.reload();"
Run Code Online (Sandbox Code Playgroud)

这是我的按钮的代码:

<a class="button" href="" style="font-size: 0.7em; padding: 5px 10px;" onclick="document.location.reload();">Recharger la page</a>
Run Code Online (Sandbox Code Playgroud)

但是当我点击按钮时,我会丢失$_POST数据$_SESSION.

如果我尝试使用键盘命令Ctrl + R(Chrome)或F5(Firefox,IE9),浏览器会显示警告,通知我我再次尝试提交表单.如果我接受,它就有效.

如何使用JavaScript命令重现这种浏览器刷新?或者我的按钮代码错了?

非常感谢您的帮助.

use*_*118 9

尝试使用

location.reload(true);
Run Code Online (Sandbox Code Playgroud)

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

您可以在Mozilla Developer wiki上阅读更多内容.

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

另外,正如ThiefMaster所提到的,你在语句;return false结束时遗漏了onclick,或者你应该设置hrefjavascript:void 0*以防止浏览器跟踪链接.

*或任何其他返回的JavaScript undefined

  • `location.reload(true)`不发布任何内容,而是使用GET请求. (2认同)

Thi*_*ter 2

只要您位于发布到的同一位置,在任何情况下都应该发生这种情况。但是,通常会在 POST 请求后进行重定向,以避免您想要执行的操作。

您的代码不起作用的原因是它href=""会导致对当前 URL 的 GET 请求。用于href="#"防止它加载“新”页面或添加到代码return false;末尾onclick="..."