Play Framework 2.2 - 在进行ajax调用时处理Url参数

时间:2014-05-04 09:56:43

标签: javascript ajax url playframework-2.2

我有一个删除个人资料的列表页面, 如果个人资料被删除,我需要重定向到同一页面并显示一条消息"个人资料已删除"。

如果是普通表单,我可以使用Play Framework的@helper.form并在控制器中调用该操作。 如果是这样的话:

在我的动作方法中,我使用Redirect(controller.action).flashing("message" -> "some message"),它运行正常。 如果我需要显示包含现有内容的页面,我也会使用Ok(views.html.profile("some message",filledForm)),并且工作正常。

但是,由于这只是一个列表,我添加了一个按钮,然后从javascript执行ajax调用:

如果成功,我使用以下方式重定向:window.location.replace("/profile/prof_deleted"); 我使用消息(/prof_deleted)在个人资料模板中显示确认/错误。 但是,如果用户尝试重新加载页面,则会再次显示确认/错误,因为它已包含在网址中。

我需要传递消息,但我认为在这种情况下会话不是一个好选项,这里不会选择闪存,并且会始终显示url参数。

1 个答案:

答案 0 :(得分:0)

没有意义,如果您使用AJAX发送删除对象的请求,为什么要执行公共页面重定向呢?

这个场景有两个更好的选择(我更喜欢第二个)

  1. 不要使用AJAX,只是普通的POST请求,路由与GET相同,即:/profiles然后在发送POST时删除对象并显示消息,否则只显示配置文件列表。
  2. 正确使用AJAX:在success状态下,只需使用JavaScript从HTML中删除项目,也可以使用JavaScript显示消息框,但不要重新加载整个页面。
    • 要删除所需的项目,您只需要为其提供唯一的ID,即:profile_123
    • 有一些现成的,很好的用于通过JS显示信息消息的库,即:noty