控制器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":{}}
问题是表格没有被退回......
答案 0 :(得分:2)
只是不留答帖子没有答案:
必须呈现表单才能将其编码为JSON:
Zend_Json::encode(array('form' => $this->form->render()));
没有->render()
数组的具有表单对象而不是HTML表示。
通常人们使用$this->form
来渲染表单,忘记它使用魔术方法__toString()
来呈现表单。