ajax - niubods/playframework-notes GitHub Wiki

Play框架中的Ajax

Play框架可以让你很容易地执行Ajax请求,这里Ajax请求默认由 jQuery 发送。这一章阐述了在框架里使用 jQuery 有多么的高效。

Play框架还附带了方便实用的 jsAction 标签来透明地获取定义在控制器里的方法。

和jsAction标签一起使用jQuery

标签 #{jsAction} 返回一个JavaScript函数,它能够基于服务器端的动作和自由变量构造出一个URL。它不会发送一个AJAX请求,你得使用它返回的URL手动发送。

让我们来看一个例子:

GET     /hotels/list        Hotels.list

现在你可以把这条路由导入客户端:

<script type="text/javascript">
   var listAction = #{jsAction @list(':search', ':size', ':page') /}
   $('#result').load(
       listAction({search: 'x', size: '10', page: '1'}), 
       function() {
           $('#content').css('visibility', 'visible')
       }
   )
</script>

在这个例子中,我们请求默认的Application控制器的list方法。另外我们还传入了三个参数:search,size和page。我们要发送的请求就存入了listAction变量中。现在使用jQuery和 load 函数我们就能发送一个请求(事实上是一个HTTP GET请求)。

事实上,发送的是这样的请求:

GET /hotels/list?search=x&size=10&page=1

在上面的例子中,请求返回HTML数据。

但是,它也可以返回JSON或者XML然后由jQuery解析这些数据。在你的控制器中,使用合适的render方法(renderJSON,renderXML或者一个XML模板)。

请到查阅 jQuery 文档以获得更多信息。

还有请注意我们也可以发送发送POST请求,那么jQuery方法就应该改成:

$.post(listAction(), function(data) {
  $('#result').html(data);
});
⚠️ **GitHub.com Fallback** ⚠️