Ajax返回Zend_Form?

时间:2013-11-15 11:54:33

标签: jquery ajax zend-framework

控制器A:

Zend_Controller_Front::getInstance()
        ->setParam('noViewRenderer', false);
$this->_helper->layout->disableLayout();
$form = new Form_Targets();
$this->view->form = $form;
if(!isset($form)) $form = false;

查看A:

<?php echo Zend_Json::encode(array('form' => $this->form));?>

控制器B:

Zend_Controller_Front::getInstance()
        ->setParam('noViewRenderer', true);
        $this->_helper->layout->disableLayout();

        $form = new Form_Targets();
        $this->view->form = $form;
        if(!isset($form)) $form = false;
        echo Zend_Json::encode(array('form' => $form));

查看B:

Blank

查看Ajax返回的脚本:

<div id='paz'>
    <p>Ello</p>
    <p>Ello</p>
</div>

<script type="text/javascript">
    $('#available').bind('change', function (e) 
    {
        $.getJSON('<?php echo $this->baseURL()?>/admin/ajax/target-year/year/' + encodeURIComponent($('#available').val()),
        function(data) 
        {
            alert(data);
            $("#paz").html(data.form);
        }
        );
    });
</script>

回应A:

{"form":{}}

回应B:

{"form":{}}

问题是表格没有被退回......

1 个答案:

答案 0 :(得分:2)

只是不留答帖子没有答案:

必须呈现表单才能将其编码为JSON:

Zend_Json::encode(array('form' => $this->form->render()));
没有->render()数组的

具有表单对象而不是HTML表示。

通常人们使用$this->form来渲染表单,忘记它使用魔术方法__toString()来呈现表单。