繁体   English   中英

用户刷新页面时,将重新提交HTML表单-如何阻止这种情况发生?

[英]HTML form is resubmitted when user refreshes page - how do I stop this from happening?

用户提交html表单(使用method =“ post”)后,会将其带回到他们所在的页面(但某些数据已更改)。 如果用户刷新页面,则会再次提交表单。 在我的应用程序中,这可能会创建一个非法状态(因为表单数据是在未经验证的情况下提交的)。

当用户刷新页面时,如何防止提交表单?

以下是一些示例代码,可让您基本了解发生的情况:

<script type="javascript">
function verifyForm() {
//do stuff
}
...
<form onsubmit="return verifyForm();" method="post">
<input name="testing" type="text" size="8" />
<input name="save" type="submit value="Submit Form" />
</form>

然后在JSP控制器中:

public class myController implements Controller
{ 
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
{
// do stuff with the form data received in the request
}
}

我可能有几个地方可以解决此问题:在html页面本身中,或在控制器中(在jsp中使用MVC模式)。 到目前为止,我已经发现这个问题似乎几乎适用于我的问题,但是似乎并没有问同样的事情(也是我没有使用PHP)。

您需要使用PRG模式:Post / Redirect / Get。

在此处阅读有关内容: http : //en.wikipedia.org/wiki/Post/Redirect/Get

规范的解决方案是在每次成功的POST之后重定向。 浏览器将使用GET执行重定向,因此不会发布任何内容; 如果您重新加载,将仅重复GET请求,而不是初始POST。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM