play 框架允许你很容易执行 ajax 请求, 它默认使用 jQuery 作为实现。本节我 们将描述如何在框架里有效使用 jQuery。
play框架同时带来了方便的 jsAction标签, 用于透明地从控制器得到方法定义。
11.1. 通过 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 控制器里请求方法列表。同时传递了 三个参数: search, size 和 page。我们执行的请求操作之后被存入 listAction 变量。现在就可以使用 jQuery 和 load 函数了。
事实上,下面的请求会被发送:
GET /hotels/list?search=x&size=10&page=1
在这种情况下,这个请求将返回 HTML 数据。
然后,也可使用 jQuery 对数据进行整理后返回 JSON 或 XML。在控制器里,使用 适当的 render 方法(renderJSON, renderXML 或 XML 模板)
参考 jQuery 文档可获取更多信息。
请注意,我们也可执行 POST,对应的 jQuery 方法应该调整为:
$.post(listAction(), function(data) {
$('#result').html(data);
});