8

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

非常感谢您的帮助。

4

3 回答 3

9

尝试使用

location.reload(true);

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

您可以在 Mozilla 开发者 wiki 阅读更多内容。

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

此外,正如 ThiefMaster 所提到的,您在语句;return false的末尾缺少onclick,或者您应该将 * 设置hrefjavascript:void 0*以防止浏览器跟踪链接。

*或任何其他返回的 JavaScriptundefined

于 2012-06-02T09:29:06.933 回答
2

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

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

于 2012-06-02T09:24:45.767 回答
0

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

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

于 2012-06-02T09:28:04.920 回答