【问题标题】:Scala Play - calling controller method from view doesn't load a new pageScala Play - 从视图调用控制器方法不会加载新页面
【发布时间】:2014-07-01 03:17:54
【问题描述】:

我显示信息,收集一些用户的输入,并从视图中使用 ajax/java 脚本调用来调用控制器方法。但是,控制器方法不会显示新的/不同的 html 页面,而是返回到我调用 jscript 的原始 html 页面。

这是因为ajax调用吗?如何确保控制器方法会显示它应该显示的 html 文件,而不是停留在旧的 html 页面上?

【问题讨论】:

  • 您确实需要提供更多详细信息才能获得更多帮助。但听起来您需要为表单生成的 POST 操作创建一个单独的控制器方法。
  • 是的,我有一个控制器方法,它被调用。问题是 Ok(nextveiw.scala.html) 没有显示下一个视图。而是继续显示旧页面。
  • 修复标签...播放什么?

标签: ajax scala playframework jscript


【解决方案1】:

在我看来,您想要做的是打开一个与您所在的网址不同的网址。为此,您不使用 ajax。而是尝试使用 javascript 更改 window.location 以告诉浏览器转到 url(或“调用您的控制器”)。它看起来像这样:

window.location.assign("/your/controller/url"); // or
window.location = "/your/controller/url";

这里有更多关于它的信息:https://developer.mozilla.org/en-US/docs/Web/API/Window.location

您可以将 ajax 视为一个单独的小浏览器,它可以让您调用 Web 服务器,但让您处理 javascript 返回的内容,而不是总是将其显示给用户。因此,如果您想使用 ajax 进行调用,但将响应 HTML 放入您的页面,您有责任获取该响应并将其插入 DOM。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多