我想创建一个按钮来重新加载页面,而不会丢失$_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命令? 或者是我的按钮的代码错了吗?
非常感谢您的帮助。
尝试使用
location.reload(true);
这将执行“硬”刷新,而不仅仅是重建DOM还会再从服务器检索的任何资源。
你可以阅读更多在Mozilla开发者维基。
显然, location.reload()
是相当于F5
中的脚本,而Ctrl+F5
/ Ctrl+R
可以使用模拟location.reload(true)
。
此外,作为ThiefMaster提到的,你错过了;return false
在你结束onclick
陈述,或者你应该设置href
到javascript:void 0
*,以防止浏览器下面的链接。
*或其他任何一段JavaScript代码返回undefined
这应该在任何情况下,只要你对你贴到同一位置发生。 然而,这是常见的后重定向POST请求,以避免正是你正在尝试做的。
为什么你的代码不工作的原因是, href=""
会导致一个GET请求到当前的URL。 使用href="#"
,以防止它加载一个“新”页面或添加return false;
在你结束onclick="..."
代码。
在Ctrl + R
刷新页面并清除缓存。 我猜你正在使用Internet Explorer? 其他一些浏览器这样的表现,当你点击Ctrl + F5
,但不与Ctrl + R
资料来源:
https://superuser.com/questions/205279/ctrlf5-vs-ctrlr-on-browsers
在按Ctrl-R浏览器的问题