Zend_Controller-ActionHelpers-Json.xml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <sect3 id="zend.controller.actionhelpers.json">
  2. <title>JSON</title>
  3. <para>
  4. 当处理期望数据表响应的 AJAX 请求,JSON 响应迅速变成选择的响应。JSON 可以立即在客户端被解析,从而快速执行。
  5. </para>
  6. <para>
  7. JSON 动作助手完成以下任务:
  8. </para>
  9. <itemizedlist>
  10. <listitem><para>
  11. 如果布局是打开(enabled)的,则关闭(disable)它。
  12. </para></listitem>
  13. <listitem><para>
  14. 如果视图解析器(ViewRenderer)是打开的,则关闭它。
  15. </para></listitem>
  16. <listitem><para>
  17. 设置 'Content-Type' 响应头为 'application/json'。
  18. </para></listitem>
  19. <listitem><para>
  20. 缺省地,不需要等待动作执行完成,立即返回响应。
  21. </para></listitem>
  22. </itemizedlist>
  23. <para>
  24. 用法很简单:或者把它作为助手代理的方法来调用,或者调用 <code>encodeJson()</code> 和 <code>sendJson()</code> 方法的其中之一:
  25. </para>
  26. <programlisting role="php"><![CDATA[
  27. class FooController extends Zend_Controller_Action
  28. {
  29. public function barAction()
  30. {
  31. // do some processing...
  32. // Send the JSON response:
  33. $this->_helper->json($data);
  34. // or...
  35. $this->_helper->json->sendJson($data);
  36. // or retrieve the json:
  37. $json = $this->_helper->json->encodeJson($data);
  38. }
  39. }
  40. ]]>
  41. </programlisting>
  42. <note>
  43. <title> 保持布局 (Keeping Layouts)</title>
  44. <para>
  45. 如果你为 JSON 响应有分离的布局 - 也许把 JSON 封装到一些上下文 - 在 JSON 助手的每个方法接受第二个可选的参数:打开或关闭布局的 flag ,传递一个布尔 <code>true</code> 值将使布局保持打开:
  46. </para>
  47. <programlisting role="php"><![CDATA[
  48. class FooController extends Zend_Controller_Action
  49. {
  50. public function barAction()
  51. {
  52. // Retrieve the json, keeping layouts:
  53. $json = $this->_helper->json->encodeJson($data, true);
  54. }
  55. }
  56. ]]>
  57. </programlisting>
  58. </note>
  59. </sect3>
  60. <!--
  61. vim:se ts=4 sw=4 et:
  62. -->