我正在尝试在<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);
}
});
});
在 Controller 中:
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
它按预期工作。我错过了什么?
如有任何帮助,我们将不胜感激。
最佳答案
我的 friend 帮我解决了这个问题。这是他的解决方案:
渲染结果应使用processOutput
进行后处理。此方法对 render() 生成的输出进行后处理。此方法在 render() 和 renderText() 结束时调用。如果有注册的客户端脚本,此方法会将它们插入到输出中适当的位置。如果有动态内容,也会被插入。此方法还可以将持久页面状态保存在页面中有状态表单的隐藏字段中。。
渲染结果是否进行后处理由$processOutput
参数定义,默认为false
:renderPartial(string $view, array $data=NULL, bool 值 $return=false, bool 值 $processOutput=false)
而不是
$this->renderPartial('myView', array('myForm'=>$form));
你应该打电话:
$this->renderPartial('myView', array('myForm'=>$form), false, true);
关于php - 部分渲染的 div 内的 ajax 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558850/