部分渲染div中的ajax验证

时间:2012-03-04 21:11:23

标签: php ajax validation yii

我正在尝试处理<div class="b">中的ajax验证,这是使用ajax部分呈现...

enter image description here

$('.a').click(function(event){
        $.ajax({
            url: '<?php echo Yii::app()->createUrl('myController/myAction'); ?>',
            type: "POST",
            success: function( data ) {
                $('.b').html(data);
          }
        });
    });
控制器中的

public function actionMyAction()
{
    $form = new MyForm;

    if(isset($_POST['MyForm']))
    {
        $form->attributes=$_POST['MyForm'];
        if($form->validate())
        {
            ...
            $this->refresh();
        }
    }

    $this->renderPartial('myView', array('myForm'=>$form));
}

如果我使用render代替renderPartial,则按预期工作。我错过了什么?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

我的朋友帮我解决了这个问题。这是他的解决方案:

渲染结果应使用processOutput进行后处理。此方法“后处理render()生成的输出。此方法在render()和renderText()的末尾调用。如果有已注册的客户端脚本,此方法将在适当的位置将它们插入到输出中。如果有动态内容,它们也会被插入。这个方法也可以在页面“

中保存有状态表单的隐藏字段中的持久页面状态。

是否对后处理的渲染结果由$processOutput参数定义,默认为falserenderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false)

而不是

$this->renderPartial('myView', array('myForm'=>$form));
你应该致电:

$this->renderPartial('myView', array('myForm'=>$form), false, true);