Play-Framework&Ajax如何?

问题描述:

我正在寻找使用AJAX执行以下操作...Play-Framework&Ajax如何?

我向我的服务器发送了一个请求,需要花费大量的时间才能完成。该请求在控制器中完成,并且在完成时加载HTML页面以通知用户其完成。

但是,我想要做的是请求异步发送,加载完成页面,然后加载请求结果一旦可用。我假设我会使用AJAX来做到这一点,但我不完全确定如何。任何人都可以指点我做这样的事情吗?

如果我上面的解释太混乱了这里是我想做的事......

1)从控制器发送请求给服务器asyncronously。

2)加载HTML页面。

3)当请求已完成填充字段在已加载的HTML页面与来自请求的响应。

+0

您是否需要很长时间,因为服务器上的事件或长时间计算? – 2011-12-27 23:21:21

我最近写了一个教程,走过如何与播放1.2为此,JSON和jQuery:
Tutorial: Play Framework, JPA, JSON, jQuery, & Heroku

+0

伟大的指南,谢谢! :) – Skizit 2011-12-28 23:59:18

有2个部分,你需要考虑到这里:

  1. 该客户端
  2. 服务器端

对于客户端一面; Ajax请求(例如,使用jQuery.ajax)按定义是异步的。这意味着,你应该能够做到以下几点 - 再次使用jQuery,这使得事情变得更加简单 - 在你的HTML页面:

// 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代码能够解析的东西(使用Play的renderJson(),JSON可能是最简单的)。

我自己还没有使用过这种设置 - 也许有人可以证实这将是做到这一点的方式吗?