2013-10-31 220 views
3

我曾经在一个PAGE电泳形式简单的形式提交到同一page.After表单提交当我点击浏览器刷新按钮,它会要求重发的形式,当我点击重新发送它提交形式再次。刷新页面提交表单反复

有我的代码或它的正常浏览器的行为的任何问题?

有没有什么办法可以防止这种情况..

+0

您还没有使用该平台进行标记,因此很难将其链接到平台。但他们在那里 –

+1

This [answer](http://stackoverflow.com/a/4473801/237838)可能对你有帮助。请看一看。 $( '形式')preventDoubleSubmission(); – John

回答

1

这是正常的行为。防止使用其他页面提交并重定向回表单。

+2

这应该是一个评论它是正确的,但没有帮助,因为它不帮助OP解决问题 –

0

是正常行为。当您提交表单时,即使是在同一页面上,浏览器也会提出请求。刷新按钮发送相同的请求。因此,多个提交。

而且没有......你不能做任何事情,也许除了AJAX提交表单。

+0

你可以轻松地做一些事情。该模式称为post-redirect-get或post后重定向 –

0

这是浏览器的正常行为,如果它检测到一个POST请求和刷新页面,浏览器会自动询问是否有重新发送请求。为了防止这种情况..好..你可以简单地重定向到另一个页面,或仔细检查服务器端的形式提交(看看有没有双)

0

这是一种正常的行为,但可以添加,在你的治疗,重定向到同一页的末尾而不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> 
4

这个browser.You的正常行为可以防止这种情况,通过一旦当前表单提交重定向到其他网页。

常见的解决办法,以正在执行POST请求后,重定向发送到的GET请求。这样客户端将最终在浏览器视图中获得GET请求。刷新这个只会重新执行GET请求,不会(不应该)修改任何东西。