Zend_Controller-ActionHelpers-Json.xml 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <sect3 id="zend.controller.actionhelpers.json">
  2. <title>JSON</title>
  3. <para>
  4. JSON быстро становится предпочтительным форматом для использования с
  5. AJAX-запросами, которые подразумевают ответы с данными. Синтаксический
  6. разбор JSON может производиться сразу на стороне клиента, что приводит
  7. к большей производительности.
  8. </para>
  9. <para>
  10. Помощник действий JSON выполняет несколько функций:
  11. </para>
  12. <itemizedlist>
  13. <listitem><para>
  14. Отключает макеты, если они включены.
  15. </para></listitem>
  16. <listitem><para>
  17. Отключает ViewRenderer, если он включен.
  18. </para></listitem>
  19. <listitem><para>
  20. Устанавливает заголовок ответа 'Content-Type' со значением
  21. 'application/json'.
  22. </para></listitem>
  23. <listitem><para>
  24. По умолчанию сразу возвращает ответ, не дожидаясь завершения
  25. выполнения действия.
  26. </para></listitem>
  27. </itemizedlist>
  28. <para>
  29. Использование помощника довольно простое - вызывайте его как метод
  30. брокера помощников или вызывайте один из его методов
  31. <code>encodeJson()</code> или
  32. <code>sendJson()</code>:
  33. </para>
  34. <programlisting role="php"><![CDATA[
  35. class FooController extends Zend_Controller_Action
  36. {
  37. public function barAction()
  38. {
  39. // произведение некоторых действий...
  40. // Отправка ответа JSON:
  41. $this->_helper->json($data);
  42. // или...
  43. $this->_helper->json->sendJson($data);
  44. // либо получение данных в формате json:
  45. $json = $this->_helper->json->encodeJson($data);
  46. }
  47. }
  48. ]]>
  49. </programlisting>
  50. <note>
  51. <title>Использование с макетами</title>
  52. <para>
  53. Для того, чтобы использовать отдельные макеты для JSON-ответов
  54. (например, для того, чтобы помещать JSON-ответы в некоторый
  55. контекст), все методы в помощнике JSON принимают второй опциональный
  56. параметр - флаг для включения и отключения макетов. Передача
  57. значения <code>true</code> сохранит макеты включенными:
  58. </para>
  59. <programlisting role="php"><![CDATA[
  60. class FooController extends Zend_Controller_Action
  61. {
  62. public function barAction()
  63. {
  64. // Получение данных в формате json, макеты остаются включенными
  65. $json = $this->_helper->json->encodeJson($data, true);
  66. }
  67. }
  68. ]]>
  69. </programlisting>
  70. </note>
  71. </sect3>
  72. <!--
  73. vim:se ts=4 sw=4 et:
  74. -->