2
假设我有一个Rails控制器方法,它在用户提交表单时执行。现在,用户提交表单,并且在方法正在运行(并且未向用户呈现下一页)时,用户点击“刷新”。会发生什么?该方法是否会停止运行并重新启动,或者是否会有另一个线程再次运行该方法?Rails控制器方法执行
假设我有一个Rails控制器方法,它在用户提交表单时执行。现在,用户提交表单,并且在方法正在运行(并且未向用户呈现下一页)时,用户点击“刷新”。会发生什么?该方法是否会停止运行并重新启动,或者是否会有另一个线程再次运行该方法?Rails控制器方法执行
我必须找到答案了这个自己,这里是我发现了什么(使用Chrome检查网络选项卡)
浏览器发送以下请求:
在使用者命中刷新,这将导致:
换句话说,它不会重新提交表单,它重新带来了编辑表单。现在
...如果不是击中刷新他们打提交第二次,将发出第二
这将调用您的控制器方法的第二时间。
如果这是一个问题,您可能需要添加一些逻辑来忽略或以其他方式处理后续提交(简单状态机?)。记住电子商务网站在收到东西之后有“不要再提交两次”这样的信息的日子......他们没有这种逻辑:)
Sporkinventor,非常详细的答案,谢谢! – John