1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20765 -->
4 <sect3 id="zend.controller.actionhelpers.json">
8 <acronym>JSON</acronym> レスポンスは、<acronym>AJAX</acronym> リクエストでデータセットを受け取るときの
9 形式としてすっかり定着しました。<acronym>JSON</acronym> はクライアント側で
10 すぐにパースすることができ、すばやく実行できます。
14 <acronym>JSON</acronym> アクションヘッダは次のようなことを行います。
20 レイアウト機能が有効になっている場合はそれを無効にする。
27 <methodname>Zend_Json::encode()</methodname> の 2 番目の引数として渡す。
28 このオプションの配列で、レイアウト機能を有効にしたり
29 <classname>Zend_Json_Expr</classname> によるエンコードを有効にしたりする。
32 <programlisting language="php"><![CDATA[
33 $this->_helper->json($data, array('enableJsonExprFinder' => true));
39 ViewRenderer が有効になっている場合にそれを無効にする。
45 'Content-Type' レスポンスヘッダを '<filename>application/json</filename>' に設定する。
58 使い方は簡単です。ヘルパーブローカのメソッドとしてコールするか、
59 <methodname>encodeJson()</methodname> あるいは
60 <methodname>sendJson()</methodname> といったメソッドをコールするだけです。
63 <programlisting language="php"><![CDATA[
64 class FooController extends Zend_Controller_Action
66 public function barAction()
70 $this->_helper->json($data);
73 $this->_helper->json->sendJson($data);
76 $json = $this->_helper->json->encodeJson($data);
82 <title>レイアウトの維持</title>
85 <acronym>JSON</acronym> レスポンスでレイアウト機能を使用したい場合
86 (いくつかの <acronym>JSON</acronym> レスポンスをひとつにまとめて処理するなど)
87 のために、<acronym>JSON</acronym> ヘルパーの各メソッドには
89 この引数はオプションのフラグで、レイアウト機能を有効あるいは無効にします。
90 <constant>TRUE</constant> を渡すと、レイアウト機能を有効なままにします。
93 <programlisting language="php"><![CDATA[
94 $this->_helper->json($data, true);
98 オプションで、2 番目の引数に配列を渡すことができます。
99 この配列には、<emphasis>keepLayouts</emphasis>
100 のオプションを含むさまざまなオプションを指定できます。
103 <programlisting language="php"><![CDATA[
104 $this->_helper->json($data, array('keepLayouts' => true);
109 <title>Zend_Json_Expr を使用したエンコードの有効化</title>
112 <methodname>Zend_Json::encode()</methodname> は、ネイティブ <acronym>JSON</acronym> 式を
113 <classname>Zend_Json_Expr</classname> オブジェクトを使用してエンコードできます。
114 このオプションはデフォルトでは無効になっています。
115 有効にするには、<emphasis>enableJsonExprFinder</emphasis>
116 オプションに <constant>TRUE</constant> を設定します。
119 <programlisting language="php"><![CDATA[
120 $this->_helper->json($data, array('enableJsonExprFinder' => true);
124 これを行いたい場合は、2 番目の引数に必ず配列を渡さなければなりません。
125 また、たとえば <emphasis>keepLayouts</emphasis> のような他のオプションと組み合わせることもできます。
126 これらすべてのオプションが <methodname>Zend_Json::encode()</methodname> に渡されます。
129 <programlisting language="php"><![CDATA[
130 $this->_helper->json($data, array(
131 'enableJsonExprFinder' => true,
132 'keepLayouts' => true,