我有一个功能,用户从下拉列表中选择一个页码,然后将结果提交到同一页面,因此选择的任何内容都可以保持选中状态,但是如果用户尝试刷新页面,它会询问用户是否要重新提交表单。
有没有办法阻止浏览器询问用户是否要刷新页面?
function select($pages,$location) {
echo "<form method='POST' action='$location'>";
echo "<select name='select' onchange='this.form.submit()'>";
while ($tempCount < $pages) {
$tempCount++;
if ($_POST['select'] != null && $_POST['select'] == $tempCount) {
$selected = "selected";
}
else {
$selected = null;
}
echo "<option $selected value='$tempCount'>Page $tempCount</option>";
}
echo "</select>";
echo "</form>";
}
}
答案 0 :(得分:3)
三种可能的解决方案。
使用GET代替POST。浏览器不会提示用户进行GET。
使用POST,但将数据发布到永不渲染的插页式广告(“中间”)页面(甚至只是一个http处理程序)。插页式广告应处理发布的数据,然后重定向到显示给用户的真实页面。因为每个重定向都是GET,刷新最终页面不会触发提示。
既不使用GET也不使用POST。相反,使用AJAX更新幕后需要的内容。
答案 1 :(得分:0)
如果您不必使用POST,则可以使用评论中建议的GET表单。但通常的解决方法是应用POST/Redirect/GET模式。不幸的是,这意味着你必须手动传递数据。
另一种hacky而非万无一失的方法是听F5键按,然后在Javascript中执行window.location = window.location
。该分配将导致页面在没有任何警告的情况下重新加载,但如果用户按下浏览器本身的刷新按钮则不起作用。