<sect3 id="zend.controller.actionhelpers.json">
    <title>JSON</title>

    <para>
        תגובות JSON נעשות יותר ויותר פופולריות כשזה מגיע לעבודה מול AJAX; ניתן לעבד קוד JSON ישירות בצד הלקוח ולכן לגרום למערכת לבצע את הטעינה והעיבוד מהר יותר.
    </para>

    <para>
        תוסף העזרה של JSON עושה כמה דברים:
    </para>

    <itemizedlist>
        <listitem><para>
                ביטול תבניות אם כרגע פעילות.
        </para></listitem>

        <listitem><para>
                ביטול ViewRenderer אם כרגע פעיל.
        </para></listitem>

        <listitem><para>
            הגדרת כותר ה 'Content-Type' ל 'application/json'.
        </para></listitem>

        <listitem><para>
                כברירת מחדל, מחזיר את התוצאה ישר, ללא המתנה עד שהפעולה תסתיים.
        </para></listitem>
    </itemizedlist>

    <para>
        השימוש הוא פשוט:
    </para>

    <programlisting role="php"><![CDATA[
class FooController extends Zend_Controller_Action
{
    public function barAction()
    {
        // do some processing...
        // Send the JSON response:
        $this->_helper->json($data);

        // or...
        $this->_helper->json->sendJson($data);

        // or retrieve the json:
        $json = $this->_helper->json->encodeJson($data);
    }
}
]]>
    </programlisting>

    <note>
        <title>תבניות פעילות</title>

        <para>
            אם ישנה תבנית נפרדת לתגובות מסוג JSON -- כדי אולי לעטוף את התגובה של JSON שהתקבלה בתוכן מסויים -- כל מתודה בתוסף העזרה של JSON מקבל פרמטר שני.
            פרמטר שני זה מפעיל או מבטל תבניות. העברת פרמטר שני <code>true</code> ישאיר את התבניות פעילות:
        </para>

        <programlisting role="php"><![CDATA[
class FooController extends Zend_Controller_Action
{
    public function barAction()
    {
        // Retrieve the json, keeping layouts:
        $json = $this->_helper->json->encodeJson($data, true);
    }
}
]]>
        </programlisting>
    </note>
</sect3>
<!--
vim:se ts=4 sw=4 et:
-->
