Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 刷新页面会反复提交表单_Javascript_Jquery_Forms_Browser - Fatal编程技术网

Javascript 刷新页面会反复提交表单

Javascript 刷新页面会反复提交表单,javascript,jquery,forms,browser,Javascript,Jquery,Forms,Browser,我在页面中有一个简单表单。表单正在提交到同一页面。提交表单后,当我单击“浏览器刷新”按钮时,它会要求重新发送表单,当我单击“重新发送”时,它会再次提交表单 我的代码或其正常的浏览器行为是否有任何问题 有没有办法防止这种……这是正常行为。以防止使用其他页面提交并重定向回表单。是正常行为。提交表单时,即使表单位于同一页面,浏览器也会发出请求。刷新按钮发送相同的请求。因此,提交了多份文件 不。。。你对此无能为力,除了ajax提交表单。这是浏览器的正常行为,如果它检测到POST请求并且你刷新页面,你的浏

我在页面中有一个简单表单。表单正在提交到同一页面。提交表单后,当我单击“浏览器刷新”按钮时,它会要求重新发送表单,当我单击“重新发送”时,它会再次提交表单

我的代码或其正常的浏览器行为是否有任何问题


有没有办法防止这种……这是正常行为。以防止使用其他页面提交并重定向回表单。

是正常行为。提交表单时,即使表单位于同一页面,浏览器也会发出请求。刷新按钮发送相同的请求。因此,提交了多份文件


不。。。你对此无能为力,除了ajax提交表单。

这是浏览器的正常行为,如果它检测到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>

这是浏览器的正常行为。提交当前表单后,您可以通过重定向到其他页面来防止出现这种情况


常见的解决方案是在执行POST请求后向GET请求发送重定向。这样,客户端将在浏览器视图中得到GET请求。刷新此选项只会重新执行GET请求,而GET请求不会(不应该)修改任何内容。

这应该是一条注释,它是正确的,但没有帮助,因为它不能帮助OP解决问题。您可以轻松地对此做些什么。该模式称为post redirect get或post后重定向。这可能对您有所帮助。请看一看$('form')。提交();您尚未标记平台,因此很难链接到平台的副本。但是他们在那里