2

我需要动态地将表单加载到页面中,并且可能会出现此表单的多个实例。验证和保存不是问题,但我似乎无法从控制器传回实际的表单内容/标记。使用简单值(id:1)进行测试时,我可以成功返回数据,但如果未设置数据类型或 [Object object],则实际形式始终返回为 undefined。

控制器:

public function addPermissionFormAction()
{
    $this->_helper->viewRenderer->setNoRender();
    $this->_helper->layout->disableLayout();
    //data from ajax call is successfully received
    $username = $this->getRequest()->getParam('user');
    //...Code to get $pages...
    $form = new Pds_Wizard_SubForm_Externals($pages);

    if(!isset($form)) $form = false;
    //I have run XDebug to here and confirmed that the form is built successfully.
    echo Zend_Json::encode(array('form' => $form));
}

我的 Ajax 调用:

$('#get-player-permissions').click(function() {
    if($('#test-test').val().length > 0) {
        $.ajax({
        url: '/pds/external-user/add-permission-form',
        data: { user: $('#test-test').val() },
        dataType: 'json',
        contentType: "application/json",
        success: function(data){
            alert(data.form); // [Object object]
            $("#wizardContainer").html(data.form); //empty, no form content
        }
    })
    } 
});

我已经尝试过了,甚至没有添加用于发送简单值的dataTypecontentType字段,并且没有问题通过这些字段。但是,使用该表单,在这种情况下,我会得到一个 null 或 undefined。

任何建议都值得赞赏,包括更理想的动态加载表单的方法。我不经常使用 Ajax 调用,所以如果这是一个简单的错误,我深表歉意。先感谢您!

4

1 回答 1

3

在这种情况下,您不能设置“不渲染”。您需要有一个视图“add-permission-form.phtml”(或指定的另一个视图)来格式化和显示 HTML 代码

控制器 :

public function addPermissionFormAction()
{
    $this->_helper->layout->disableLayout();

    //data from ajax call is successfully received
    $username = $this->getRequest()->getParam('user');
    //...Code to get $pages...
    $form = new Pds_Wizard_SubForm_Externals($pages);

    if(!isset($form)) $form = false;
    //I have run XDebug to here and confirmed that the form is built successfully.
    echo Zend_Json::encode(array('form' => $form));

    //Assign the form to a variable view
    $this->view->form = $form;
}

查看:add-permission-form.phtml:

<?php echo $this->form ;?>

阿贾克斯调用:

没有评论,你的代码看起来很酷

于 2013-01-30T21:43:11.120 回答