JSON(日本語) JSON レスポンスは、AJAX リクエストでデータセットを受け取るときの 形式としてすっかり定着しました。JSON はクライアント側で すぐにパースすることができ、すばやく実行できます。 JSON アクションヘッダは次のようなことを行います。 レイアウト機能が有効になっている場合はそれを無効にする。 任意で、オプションの配列を Zend_Json::encode() の 2 番目の引数として渡す。 このオプションの配列で、レイアウト機能を有効にしたり Zend_Json_Expr によるエンコードを有効にしたりする。 _helper->json($data, array('enableJsonExprFinder' => true)); ]]> ViewRenderer が有効になっている場合にそれを無効にする。 'Content-Type' レスポンスヘッダを 'application/json' に設定する。 デフォルトでレスポンスをすぐに返す。 アクションの実行が終了するのを待たない。 使い方は簡単です。ヘルパーブローカのメソッドとしてコールするか、 encodeJson() あるいは sendJson() といったメソッドをコールするだけです。 _helper->json($data); // あるいは... $this->_helper->json->sendJson($data); // あるいは JSON を取得します $json = $this->_helper->json->encodeJson($data); } } ]]> レイアウトの維持 JSON レスポンスでレイアウト機能を使用したい場合 (いくつかの JSON レスポンスをひとつにまとめて処理するなど) のために、JSON ヘルパーの各メソッドには 2 番目の引数が用意されています。 この引数はオプションのフラグで、レイアウト機能を有効あるいは無効にします。 TRUE を渡すと、レイアウト機能を有効なままにします。 _helper->json($data, true); ]]> オプションで、2 番目の引数に配列を渡すことができます。 この配列には、keepLayouts のオプションを含むさまざまなオプションを指定できます。 _helper->json($data, array('keepLayouts' => true); ]]> Zend_Json_Expr を使用したエンコードの有効化 Zend_Json::encode() は、ネイティブ JSON 式を Zend_Json_Expr オブジェクトを使用してエンコードできます。 このオプションはデフォルトでは無効になっています。 有効にするには、enableJsonExprFinder オプションに TRUE を設定します。 _helper->json($data, array('enableJsonExprFinder' => true); ]]> これを行いたい場合は、2 番目の引数に必ず配列を渡さなければなりません。 また、たとえば keepLayouts のような他のオプションと組み合わせることもできます。 これらすべてのオプションが Zend_Json::encode() に渡されます。 _helper->json($data, array( 'enableJsonExprFinder' => true, 'keepLayouts' => true, )); ]]>