当我尝试运行此脚本时:
<form class="form-inline" action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<button type="submit" name="buttonSubmit" class="btn btn-default">Submit</button>
</form>
<?php
if (isset($_POST['buttonSubmit'])) {
unset($_POST['buttonSubmit']);
echo "<script>alert(".isset($_POST['buttonSubmit']).")</script>";
echo "<script>location.reload(true);</script>";
}
?>
结果,页面在无限循环中刷新。
是什么原因?
如何只刷新一次网站?
答案 0 :(得分:1)
当您使用location.reload(true);
时,您可以通过编程方式执行相同的操作,例如点击浏览器&#34;刷新/重新加载&#34;按钮。
这会产生另一个&#34;提交&#34;,一遍又一遍,因此总是使语句isset($_POST['buttonSubmit'])
成为真。
以下是一些解决方案:
location.href = 'page-to-load';
location.replace('page-to-load');
Location.replace()
方法替换当前资源,之后当前页面将不会保存在
会话History
,意味着用户也无法使用后退按钮,
导航到它并导致重复&#34;提交&#34;,这通常会发生。
注意,如果已加载'page-to-load'
相同,则可以使用location.href
,例如
location.replace(location.href);
另一种方法是,而不是依赖客户端脚本,在表单提交,服务器端执行response redirect
。
答案 1 :(得分:1)
这对我有所帮助:
将location.reload(true);
更改为window.location.href = '';