我查看了框架文档和yii论坛,但似乎无法找到任何相关内容。我正在尝试向UActiveForm小部件添加ajax选项。换句话说,我想要在点击此ajax表单的提交按钮时将加载的gif插入到div中。我知道如何在原始的javascript / jquery / php中执行此操作,但我似乎无法使用此框架完成此操作。这是我的开始小部件代码:
<?php $form=$this->beginWidget('UActiveForm', array(
'id'=>'login-form',
'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'validateOnChange'=>false,
'validateOnType'=>false,
),
'htmlOptions' => array(
'enctype'=>'multipart/form-data','class'=>'white-popup-block'),
),
)); ?>
<!--form labels/inputs here-->
<?php $this->endWidget(); ?>
如果我没有框架,那么下面是我的ajax代码的一部分:
request = $.ajax({
url: "usersystem/login.php",
type: "POST",
data: serializedData,
beforeSend: function() {
$('#loader').show();
$('button').off(); //unbind all buttons
},
complete: function(){
$('#loader').hide();
},
success: function(data) {
$('#test').append(data);
}
});
我特别想要的是beforeSend和完整的ajax选项。我试过简单地添加
'ajax'=> array(
'beforeSend'=> 'function() {
alert("testing, ready");
}',
'complete'=> 'function(){
alert("testing,done");
}',
),
到UActiveForm小部件选项,但它不起作用。我非常感谢您尝试理解这个框架的任何帮助。
答案 0 :(得分:2)
我不知道UActiveForm
是什么,但假设某种CActiveForm
有beforeValidate
和afterValidate
个选项。可以作为clientOptions
的一部分使用:
'clientOptions'=>array(
'beforeValidate' => new CJavaScriptExpression('function() { ... })'),
'afterValidate' => new CJavaScriptExpression('function() { ... })'),
'validateOnSubmit'=>true,
'validateOnChange'=>false,
'validateOnType'=>false,
),
您需要将函数代码包装在CJavaScriptExpression
中,否则Yii会将其视为字符串并json_encode
。