假设我有一个 Rails 控制器方法,该方法在用户提交表单时执行。现在,用户提交表单,当方法运行时(并且没有向用户呈现下一页),用户点击“刷新”。会发生什么?该方法会停止运行并重新启动,还是会有另一个线程再次运行该方法?
问问题
121 次
1 回答
1
我必须自己找到答案,这就是我发现的(使用 chrome 检查器上的网络选项卡)
浏览器发送以下请求:
- GET /profile/123/edit(用户打开编辑表单)
- PUT /profile/123(用户提交表单)
用户点击刷新,导致:
- 获取 /profile/123/编辑
换句话说,它不会重新提交表单,而是重新调出编辑表单。
现在......如果他们没有点击刷新他们第二次点击提交,那将发送第二次
- 放置 /profile/123
这将再次调用您的控制器方法。
如果这是一个问题,您可能需要添加一些逻辑来忽略或以其他方式处理后续提交(简单状态机?)。还记得那些电子商务网站在你买东西后会有“不要点击提交两次”之类的消息的日子......他们没有那个逻辑:)
于 2012-11-02T03:48:57.447 回答