Mac*_*ski 21 error-handling session user-interface redirect post-redirect-get
我正在使用PRG模式来避免多个表单提交.然而,它有一个严重的缺点 - 你不能简单地echo向用户发出确认消息(显然,用户不会看到该页面,他将被重定向到另一个页面).
这个问题的解决方案是什么?我知道其中两个,但它们似乎都不完美.
http://example.com/?msg=data-saved.它是无国籍的,所以我认为它非常可靠.但是当用户复制链接,书签等时会产生问题.或许还有其他方法我不知道?会话和URL参数的某些组合?不知道.
你认为最好的方法是什么?哪一个缺点最少?优缺点都有什么?
还有其他几个堆栈溢出问题涉及到这一点,但我认为没有任何问题如此清楚地总结.以下是一些:
大多数方便的解决方案都是基于会话的,或者有更严重的缺点(例如在查询字符串中嵌入消息).
如果您不能保证会有会话,则另一种(相当昂贵的)方法是根据表单提交的结果重定向到不同的视图.例如,您可能会重定向到EditWidgetView,EditWidgetSaveSuccessfulView或EditWidgetSaveErrorView(或者您可能只是不重定向错误).在某些语言和框架中,这使得您放弃显示确认/错误消息是不切实际的,但在其他语言和框架中,这可能是值得的.
小智 6
如果您因任何原因不想依赖会话,可以使用Get变量/自定义URL,如果该变量存在,请检查refer.如果引用正确,则显示消息.是的,这增加了对发送的引用的依赖以显示确认消息,但是否则您依赖于会话(虽然可靠,但对于所有解决方案都不是100%完美.)
老实说,一些通常对这种事情非常好的大型网站只是在网址中贴了"actiondone = true".(我注意到Facebook在某些地方会这样做.)
几乎每个允许用户登录的网站都是依靠 cookie 来实现的。这不是一个完美的解决方案,但它是我们得到的最好的解决方案。
此外,会话处理也是 Web 开发框架通常为您处理的事情之一。
| 归档时间: |
|
| 查看次数: |
3896 次 |
| 最近记录: |