Javascript 如何在放置后使用一次性消息重定向

Javascript 如何在放置后使用一次性消息重定向,javascript,jquery,html,ajax,redirect,Javascript,Jquery,Html,Ajax,Redirect,下面是我想要的行为: 用户转到密码更改网页 用户填写表单并将表单放入我们的REST服务器 成功放置后,用户将被重定向到“我的帐户”页面,并显示一条消息:“密码已成功更改” 如果他们刷新“我的帐户”页面,密码信息就会消失。(即,这是一条一次性消息。) 以下是我尝试过(未成功)的解决方案: 1) 使用JQuery向REST服务器执行AJAX PUT。这对于PUT很好,但是重定向必须在onSuccess JavaScript中,如果它将URL上的消息传递到My Account页面,则该消息在刷新后挂起

下面是我想要的行为:

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

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

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


    有好的解决办法吗?或者我必须将我的PUT更改为POST吗?

    您可以使用传统的JavaScript表单进行PUT。唯一的诀窍是闪现一条临时消息。我见过一些web框架使用一种临时会话状态来处理这类事情,这对您来说不需要太多努力。如果您没有可用的会话,诀窍是在数据库中存储一个临时会话,并通过cookie引用它。这不是直截了当的,这就是为什么web框架在这种情况下可以真正帮助您

    典型的设置如下所示:

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

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

    您可以使用JavaScript使用传统表单进行PUT。唯一的诀窍是闪现一条临时消息。我见过一些web框架使用一种临时会话状态来处理这类事情,这对您来说不需要太多努力。如果您没有可用的会话,诀窍是在数据库中存储一个临时会话,并通过cookie引用它。这不是直截了当的,这就是为什么web框架在这种情况下可以真正帮助您

    典型的设置如下所示:

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

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

    我们没有一个框架来帮助我们完成这项工作,也许很遗憾。我将尝试一下建议的实现,看看它是否适合我们。谢谢。看起来我通过创建一个包含消息的cookie,然后显示消息的JSP删除了cookie,实现了这一点。谢谢你的帮助!不幸的是,我们没有一个框架来帮助我们解决这个问题。我将尝试一下建议的实现,看看它是否适合我们。谢谢。看起来我通过创建一个包含消息的cookie,然后显示消息的JSP删除了cookie,实现了这一点。谢谢你的帮助!