如何在PUT之后使用一次性消息重定向

时间:2013-09-16 17:16:40

标签: javascript jquery html ajax redirect

所以这是我想要获得的理想行为:

  1. 用户进入密码更改网页。
  2. 用户将表​​单和表单PUT填写到我们的REST服务器。
  3. 成功PUT后,用户将被重定向到“我的帐户”页面,并显示“密码已成功更改”消息。
  4. 如果他们刷新“我的帐户”页面,密码信息就会消失。 (即,这是一次性消息。)
  5. 以下是我尝试过的解决方案(失败):

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用JavaScript使用传统表单进行PUT。唯一的技巧是闪现临时消息。我已经看到了使用某种临时会话状态的Web框架,这种东西需要您付出很少的努力。如果你没有那个,那么诀窍就是在数据库中存储一个临时会话并通过cookie引用它。这不是直截了当的,这就是为什么Web框架可以在这种情况下真正帮助你。

典型设置就像这样简单:

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

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