我正在尝试处理<div class="b">
中的ajax验证,这是使用ajax部分呈现...
$('.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
,则按预期工作。我错过了什么?
任何帮助都将不胜感激。
答案 0 :(得分:2)
我的朋友帮我解决了这个问题。这是他的解决方案:
渲染结果应使用processOutput
进行后处理。此方法“后处理render()生成的输出。此方法在render()和renderText()的末尾调用。如果有已注册的客户端脚本,此方法将在适当的位置将它们插入到输出中。如果有动态内容,它们也会被插入。这个方法也可以在页面“。
是否对后处理的渲染结果由$processOutput
参数定义,默认为false
:renderPartial(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);