Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Ajax返回Zend_表单?_Jquery_Ajax_Zend Framework - Fatal编程技术网

Jquery Ajax返回Zend_表单?

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

控制器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>
查看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());
,谢谢