持续刷新页面的问题
Trouble with continous refreshing page
当我尝试运行这个脚本时:
<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>";
}
?>
因此,页面在无限循环中刷新。
这是什么原因?
如何只刷新我的网站一次?
当您使用 location.reload(true);
时,您以编程方式执行与单击浏览器 "Refresh/Reload" 按钮相同的操作。
这将一遍又一遍地生成另一个 "submit",因此始终使语句 isset($_POST['buttonSubmit'])
为真。
这里有几个解决方案:
location.href = 'page-to-load';
location.replace('page-to-load');
Location.replace()
方法替换当前资源,替换后当前页面不会保存在
session History
,这意味着用户也将无法使用后退按钮,
导航到它并导致重复 "submit",这通常会发生。
注意,如果'page-to-load'
是相同的已经加载,你可以使用location.href
,例如
location.replace(location.href);
另一种方法是,不依赖客户端脚本,而是在服务器端提交表单时执行 response redirect
。
- How to make a redirect in PHP?
这对我有帮助:
将location.reload(true);
改为window.location.href = '';
当我尝试运行这个脚本时:
<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>";
}
?>
因此,页面在无限循环中刷新。
这是什么原因?
如何只刷新我的网站一次?
当您使用 location.reload(true);
时,您以编程方式执行与单击浏览器 "Refresh/Reload" 按钮相同的操作。
这将一遍又一遍地生成另一个 "submit",因此始终使语句 isset($_POST['buttonSubmit'])
为真。
这里有几个解决方案:
location.href = 'page-to-load';
location.replace('page-to-load');
Location.replace()
方法替换当前资源,替换后当前页面不会保存在 sessionHistory
,这意味着用户也将无法使用后退按钮, 导航到它并导致重复 "submit",这通常会发生。
注意,如果'page-to-load'
是相同的已经加载,你可以使用location.href
,例如
location.replace(location.href);
另一种方法是,不依赖客户端脚本,而是在服务器端提交表单时执行 response redirect
。
- How to make a redirect in PHP?
这对我有帮助:
将location.reload(true);
改为window.location.href = '';