【问题标题】:Play-Framework & Ajax how to?Play-Framework & Ajax 如何?
【发布时间】:2011-12-28 15:45:39
【问题描述】:

我希望使用 AJAX 执行以下操作...

我向我的服务器发送了一个请求,该请求需要相当长的时间才能完成。该请求是在控制器中发出的,完成后会加载一个 HTML 页面,通知用户其完成。

但是,我想做的是异步发送请求,加载完成页面,然后在请求结果可用时加载。我想我会使用 AJAX 来做到这一点,但我不完全确定如何。谁能给我一个很好的指导来做这样的事情?

如果我上面的解释太混乱了,这就是我想要做的......

1) 从控制器异步向服务器发送请求。

2) 加载 HTML 页面。

3) 当请求完成时,在已加载的 HTML 页面中填写来自请求的响应的字段。

【问题讨论】:

  • 您的请求是否需要很长时间,因为服务器上的事件或长时间计算?

标签: java playframework


【解决方案1】:

我最近写了一篇教程,介绍了如何使用 Play 1.2、JSON 和 jQuery 做到这一点:
Tutorial: Play Framework, JPA, JSON, jQuery, & Heroku

【讨论】:

    【解决方案2】:

    这里需要考虑两个部分:

    1. 客户端
    2. 服务器端

    对于客户端方面; Ajax 请求(例如,使用jQuery.ajax)按照定义是异步的。这意味着您应该能够在您的 HTML 页面中执行以下操作 - 再次使用 jQuery,这使事情变得更容易:

    // The ready handler, which fires when the page has been loaded
    $(function() {
        jQuery.ajax(
            // Do your thing here
        );
    });
    

    对于服务器端;如果您的操作将在服务器上运行相对较长的时间(例如几个 Web 服务调用或长时间运行的 IO 操作),您将需要使用 Play 的 asynchronous capabilities 来让 Play!服务器尽可能高效地执行事情。它通过将长时间运行的操作卸载到它们自己的线程来做到这一点。

    剩下要做的就是设置到控制器的路由,实现处理程序方法并呈现客户端 JavaScript 代码能够解析的内容(JSON 可能是最简单的,使用 Play 的 renderJson()) .

    我自己没有使用过这个设置 - 也许有人可以确认这是这样做的方法吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      相关资源
      最近更新 更多