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

时间:2012-06-07 21:46:52

标签: javascript html jsp

在用户提交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模式)。到目前为止,我发现this question几乎似乎适用于我的问题,但似乎并没有问同样的事情(我也没有使用PHP)。

2 个答案:

答案 0 :(得分:1)

您需要使用PRG模式:发布/重定向/获取。

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

答案 1 :(得分:0)

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