刷新浏览器时禁用重新提交表单

时间:2016-11-24 09:52:39

标签: php jquery html mysql ajax

我有一个从用户获取输入然后搜索数据库并显示结果的表单。一切正常,除非用户刷新浏览器时出现重新提交的警报。如果我重新提交,我会获得相同的数据,但有没有办法禁用该警报?只刷新并获得相同的结果集。

这是截图。 Re-submission alert 后端 - PHP

4 个答案:

答案 0 :(得分:1)

有两种解决方法。如果您的表单未对数据进行任何修改或未记录任何人,您可以从POST切换到GET。这具有创建可由用户添加书签的URL的附加优点。

如果您的表单提交导致数据修改,您应该继续使用POST。但是,在修改数据后,您应该将用户重定向到显示结果的页面。

这样的事情

if(isset($_POST['postname'])){ 
    /** modify data here **/
    if ($data_changed) {
       header("Location: /success/page/");
    }
}

这是许多框架中的推荐做法和标准模式。 this website立刻想到了。{/ p>

答案 1 :(得分:0)

you can use isset function
if(isset($_POST['postname'])){
// your submission code
}

答案 2 :(得分:0)

您应该使用PRG (Post/Redirect/Get)概念。

一般的想法是,在POST之后,您将用户重定向到新页面,这样,即使在刷新后 - 表单也不会再次提交。

答案 3 :(得分:0)

您需要重定向,将其添加到脚本的末尾。

header('Location: '.$_SERVER['REQUEST_URI']);

请注意,这需要在输出任何html之前。