| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect3 id="zend.controller.actionhelpers.json">
- <title>JSON(日本語)</title>
- <para>
- <acronym>JSON</acronym> レスポンスは、<acronym>AJAX</acronym> リクエストでデータセットを受け取るときの
- 形式としてすっかり定着しました。<acronym>JSON</acronym> はクライアント側で
- すぐにパースすることができ、すばやく実行できます。
- </para>
- <para>
- <acronym>JSON</acronym> アクションヘッダは次のようなことを行います。
- </para>
- <itemizedlist>
- <listitem>
- <para>
- レイアウト機能が有効になっている場合はそれを無効にする。
- </para>
- </listitem>
- <listitem>
- <para>
- 任意で、オプションの配列を
- <methodname>Zend_Json::encode()</methodname> の 2 番目の引数として渡す。
- このオプションの配列で、レイアウト機能を有効にしたり
- <classname>Zend_Json_Expr</classname> によるエンコードを有効にしたりする。
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true));
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>
- ViewRenderer が有効になっている場合にそれを無効にする。
- </para>
- </listitem>
- <listitem>
- <para>
- 'Content-Type' レスポンスヘッダを '<filename>application/json</filename>' に設定する。
- </para>
- </listitem>
- <listitem>
- <para>
- デフォルトでレスポンスをすぐに返す。
- アクションの実行が終了するのを待たない。
- </para>
- </listitem>
- </itemizedlist>
- <para>
- 使い方は簡単です。ヘルパーブローカのメソッドとしてコールするか、
- <methodname>encodeJson()</methodname> あるいは
- <methodname>sendJson()</methodname> といったメソッドをコールするだけです。
- </para>
- <programlisting language="php"><![CDATA[
- class FooController extends Zend_Controller_Action
- {
- public function barAction()
- {
- // 何らかの処理をして...
- // JSON レスポンスを返します
- $this->_helper->json($data);
- // あるいは...
- $this->_helper->json->sendJson($data);
- // あるいは JSON を取得します
- $json = $this->_helper->json->encodeJson($data);
- }
- }
- ]]></programlisting>
- <note>
- <title>レイアウトの維持</title>
- <para>
- <acronym>JSON</acronym> レスポンスでレイアウト機能を使用したい場合
- (いくつかの <acronym>JSON</acronym> レスポンスをひとつにまとめて処理するなど)
- のために、<acronym>JSON</acronym> ヘルパーの各メソッドには
- 2 番目の引数が用意されています。
- この引数はオプションのフラグで、レイアウト機能を有効あるいは無効にします。
- <constant>TRUE</constant> を渡すと、レイアウト機能を有効なままにします。
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, true);
- ]]></programlisting>
- <para>
- オプションで、2 番目の引数に配列を渡すことができます。
- この配列には、<emphasis>keepLayouts</emphasis>
- のオプションを含むさまざまなオプションを指定できます。
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array('keepLayouts' => true);
- ]]></programlisting>
- </note>
- <note>
- <title>Zend_Json_Expr を使用したエンコードの有効化</title>
- <para>
- <methodname>Zend_Json::encode()</methodname> は、ネイティブ <acronym>JSON</acronym> 式を
- <classname>Zend_Json_Expr</classname> オブジェクトを使用してエンコードできます。
- このオプションはデフォルトでは無効になっています。
- 有効にするには、<emphasis>enableJsonExprFinder</emphasis>
- オプションに <constant>TRUE</constant> を設定します。
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true);
- ]]></programlisting>
- <para>
- これを行いたい場合は、2 番目の引数に必ず配列を渡さなければなりません。
- また、たとえば <emphasis>keepLayouts</emphasis> のような他のオプションと組み合わせることもできます。
- これらすべてのオプションが <methodname>Zend_Json::encode()</methodname> に渡されます。
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array(
- 'enableJsonExprFinder' => true,
- 'keepLayouts' => true,
- ));
- ]]></programlisting>
- </note>
- </sect3>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|