ajax - niubods/playframework-notes GitHub Wiki
Play框架可以让你很容易地执行Ajax请求,这里Ajax请求默认由 jQuery 发送。这一章阐述了在框架里使用 jQuery 有多么的高效。
Play框架还附带了方便实用的 jsAction
标签来透明地获取定义在控制器里的方法。
标签 #{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);
});