1

所以这是我想要得到的期望行为:

  1. 用户进入密码更改网页。
  2. 用户填写表格并将表格放入我们的 REST 服务器。
  3. 成功 PUT 后,用户将被重定向到“我的帐户”页面,并显示一条消息“密码已成功更改”。
  4. 如果他们刷新“我的帐户”页面,密码消息应该会消失。(即它是一次性消息。)

以下是我尝试过的解决方案(不成功):

1) 使用 JQuery 对 REST 服务器执行 AJAX PUT。这适用于 PUT,但重定向必须在 onSuccess JavaScript 中,并且如果它将 URL 上的消息传递到“我的帐户”页面,则该消息会在刷新后挂起。

2) 使用传统形式。但是,这不会执行 PUT(方法不支持 put、on post 和 get)。我可以做一个 POST,但从 REST 的角度来看这是“错误的”,因为我正在更新用户帐户记录,而不是创建新记录。使用此解决方案(RESTlet、Servlet 和/或 JSP),重定向和一次性消息都可以在服务器端进行处理。

那里有好的解决方案吗?或者我必须将我的 PUT 更改为 POST 吗?

4

1 回答 1

1

您可以使用 JavaScript 使用传统形式执行 PUT。唯一的技巧是闪现一条临时消息。我已经看到 Web 框架使用一种临时会话状态来处理这类事情,而您几乎不需要付出任何努力。如果您没有可用的,诀窍是在数据库中存储一个临时会话并通过 cookie 引用它。这不是直截了当的,这就是为什么 Web 框架可以在这种情况下真正帮助您的原因。

典型的设置就像这样简单:

$('form').submit(function () {
  $.ajax({
    url: 'service/api',
    data: $('form').serialize(),
    type: 'POST'})
  .done(function () {
      // perform redirect
  });

在服务器端,您设置临时会话状态并在完成时删除。

于 2013-09-16T18:04:07.197 回答