【发布时间】:2016-07-07 07:46:40
【问题描述】:
页面上有3种形式的更新数据:第一种用于用户个人资料,第二种用于密码重置,第3种用于更改电子邮件。我将表单发送到控制器并重定向到同一页面。项目组负责人要求删除这些重定向,并说人们在提交表单后不会刷新页面,重定向只会加载服务器...... 我可能是错的,但重定向总是应该在发送 POST 请求后完成。我关于通过 AJAX 制作所有表单的建议被拒绝了。如果我没记错的话,我怎样才能有能力证明需要重定向?
【问题讨论】:
页面上有3种形式的更新数据:第一种用于用户个人资料,第二种用于密码重置,第3种用于更改电子邮件。我将表单发送到控制器并重定向到同一页面。项目组负责人要求删除这些重定向,并说人们在提交表单后不会刷新页面,重定向只会加载服务器...... 我可能是错的,但重定向总是应该在发送 POST 请求后完成。我关于通过 AJAX 制作所有表单的建议被拒绝了。如果我没记错的话,我怎样才能有能力证明需要重定向?
【问题讨论】:
您正在寻找的重点是 Post-Redirect-Get 模式。
你可以在这里阅读原文:http://www.theserverside.com/news/1365146/Redirect-After-Post
它暴露了所有的动机;简而言之,该模式防止重复提交(因为页面很慢,所以用户失去了耐心)并允许浏览器安全地刷新(最后一个)页面,而不会有重新提交数据的风险(或者至少有那个弹出-向上警告您正在重新提交数据)。
【讨论】:
提交表单后需要重定向,我假设您现在应该这样做:
在上述情况下会出现问题,当提交表单并且您将普通视图返回给用户而不重定向页面并且在视图上用户尝试刷新他将获得的页面以下警告消息。
您要查找的页面使用了您输入的信息。 返回该页面可能会导致您重复执行的任何操作。 要继续吗?
这意味着浏览器将再次发送那些已经在之前的请求中处理过的数据,因此在服务器端处理的数据可能存在一些歧义。
这可能是在提交和处理表单后重定向页面的原因。
【讨论】:
重定向仅用于清除所有帖子数据。如果您选择不重定向,则用户在使用后退或前进按钮时可能会遇到一些不便。他将被要求再次发送帖子数据。
【讨论】: