所以这是我想要获得的理想行为:
以下是我尝试过的解决方案(失败):
1)使用JQuery对REST服务器执行AJAX PUT。这适用于PUT,但重定向必须在onSuccess JavaScript中,如果它将URL上的消息传递到“我的帐户”页面,则刷新后该消息会挂起。
2)使用传统形式。但是,这不会做PUT(方法不支持put,on post和get)。我可以执行POST,但从REST角度来看这是“错误的”,因为我正在更新用户帐户记录,而不是创建新记录。使用此解决方案(RESTlet,Servlet和/或JSP)可以在服务器端处理重定向和一次性消息。
那里有好的解决方案吗?或者我必须将PUT更改为POST吗?
答案 0 :(得分:1)
您可以使用JavaScript使用传统表单进行PUT。唯一的技巧是闪现临时消息。我已经看到了使用某种临时会话状态的Web框架,这种东西需要您付出很少的努力。如果你没有那个,那么诀窍就是在数据库中存储一个临时会话并通过cookie引用它。这不是直截了当的,这就是为什么Web框架可以在这种情况下真正帮助你。
典型设置就像这样简单:
$('form').submit(function () {
$.ajax({
url: 'service/api',
data: $('form').serialize(),
type: 'POST'})
.done(function () {
// perform redirect
});
在服务器端,您可以设置临时会话状态,并在完成时删除。