Documentation

You are viewing the documentation for Play 1. The documentation for Play 2 is here.

Play フレームワークにおける Ajax

Play フレームワークは、はじめから jQuery を含めてリリースされており、簡単に Ajax リクエストを行うことができます。このセクションは、どのようにして Play フレームワークにおいて jQuery を効率的に使用するかについて記載します。

Play フレームワークには、コントローラから透過的にメソッド定義を取得する、手軽な jsAction タグも含まれています。

jQuery を jsAction タグと使う

この #{jsAction /} タグは、サーバアクションに基づいた URL と自由な変数から成る JavaScript 関数を返却します。この関数では AJAX リクエストを行わないので、返却された URL を使って手作業で Ajax リクエストを実行する必要があります。

例を見てみましょう:

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 メソッドを指定しています。3 つの引数: search、size そして page も渡しています。この実行結果は listAction 変数に保存されます。ここで、jQuery と load 関数を使ってリクエスト (実際には HTTP GET リクエスト) を実行します。

実際のところ、以下のリクエストが発行されます:

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

このケースでは、発行したリクエストは HTML データを返します。

jQuery にデータを解釈させるために JSON または XML を返すことも可能です。コントローラで適切な render メソッド (renderJSON、renderXML または XML テンプレート) を使用してください。

より詳しい情報については、jQuery ドキュメントを参照してください。

jQuery メソッドを以下のように変更することで POST も発行できることに注意してください:

$.post(listAction, function(data) {
  $('#result').html(data);
});