我曾经在一个PAGE电泳形式简单的形式提交到同一page.After表单提交当我点击浏览器刷新按钮,它会要求重发的形式,当我点击重新发送它提交形式再次。刷新页面提交表单反复
有我的代码或它的正常浏览器的行为的任何问题?
有没有什么办法可以防止这种情况..
我曾经在一个PAGE电泳形式简单的形式提交到同一page.After表单提交当我点击浏览器刷新按钮,它会要求重发的形式,当我点击重新发送它提交形式再次。刷新页面提交表单反复
有我的代码或它的正常浏览器的行为的任何问题?
有没有什么办法可以防止这种情况..
这是正常的行为。防止使用其他页面提交并重定向回表单。
这应该是一个评论它是正确的,但没有帮助,因为它不帮助OP解决问题 –
是正常行为。当您提交表单时,即使是在同一页面上,浏览器也会提出请求。刷新按钮发送相同的请求。因此,多个提交。
而且没有......你不能做任何事情,也许除了AJAX提交表单。
你可以轻松地做一些事情。该模式称为post-redirect-get或post后重定向 –
这是浏览器的正常行为,如果它检测到一个POST请求和刷新页面,浏览器会自动询问是否有重新发送请求。为了防止这种情况..好..你可以简单地重定向到另一个页面,或仔细检查服务器端的形式提交(看看有没有双)
这是一种正常的行为,但可以添加,在你的治疗,重定向到同一页的末尾而不POST:
<?php
// set to true to display a waiting message "Thanks you, you will be redirected in 5 sec."
$wait_before_refresh = false;
if (isset($_POST['myButton']))
{
// process to your checks, do whatever you want
// ...
if ($wait_before_refresh)
{
$html_redirect = <<<HTML_REDIR
<!DOCTYPE html>
<html><head><title>Thanks you !</title>
<meta http-equiv="refresh" content="5;URL='/'" />
</head>
<body>Thanks you, you will be redirected in 5 sec.</body></html>
HTML_REDIR;
echo $html_redirect;
}
else
{
header('Location : /');
exit;
}
}
?>
<form method="POST" action="/"><input type="submit" name="myButton" value="clicked" /></form>
这个browser.You的正常行为可以防止这种情况,通过一旦当前表单提交重定向到其他网页。
常见的解决办法,以正在执行POST请求后,重定向发送到的GET请求。这样客户端将最终在浏览器视图中获得GET请求。刷新这个只会重新执行GET请求,不会(不应该)修改任何东西。
您还没有使用该平台进行标记,因此很难将其链接到平台。但他们在那里 –
This [answer](http://stackoverflow.com/a/4473801/237838)可能对你有帮助。请看一看。 $( '形式')preventDoubleSubmission(); – John