Jquery Ajax返回Zend_表单?
控制器A:Jquery Ajax返回Zend_表单?,jquery,ajax,zend-framework,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; <?php echo
Zend_Controller_Front::getInstance()
->setParam('noViewRenderer', false);
$this->_helper->layout->disableLayout();
$form = new Form_Targets();
$this->view->form = $form;
if(!isset($form)) $form = false;
<?php echo Zend_Json::encode(array('form' => $this->form));?>
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));
<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:
Zend_Controller_Front::getInstance()
->setParam('noViewRenderer', false);
$this->_helper->layout->disableLayout();
$form = new Form_Targets();
$this->view->form = $form;
if(!isset($form)) $form = false;
<?php echo Zend_Json::encode(array('form' => $this->form));?>
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));
<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>
视图B:
Blank
查看Ajax返回的脚本:
Zend_Controller_Front::getInstance()
->setParam('noViewRenderer', false);
$this->_helper->layout->disableLayout();
$form = new Form_Targets();
$this->view->form = $form;
if(!isset($form)) $form = false;
<?php echo Zend_Json::encode(array('form' => $this->form));?>
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));
<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>
答复B:
{"form":{}}
问题是表单没有被返回…只是为了不要在没有答案的情况下离开线程: 必须呈现表单才能将其编码为JSON:
Zend_Json::encode(array('form' => $this->form->render()));
如果没有->render()
数组,则该数组具有表单对象,而不是它的HTML表示形式
通常人们使用
$this->form
来呈现表单,而忘记了它使用神奇的方法\uu toString()
来呈现表单。为什么要使用JSON?可能只是发送纯HTML,然后你就可以将HTML粘贴到你的网站上。问题是,当我使用纯HTML时,getJSON函数不起作用,alert()也没有运行,我应该使用$.ajax函数吗?我试过了,它甚至没有进行ajax调用…可能是我的语法错误尝试这个->Zend_Json::encode(数组('form'=>$this->form->render());
所以你实际上在JSON中有了一些东西。这很有效:在控制器中使用了Zend_JSON::encode(array('form'=>$form->render());
,谢谢