如何将ajax选项添加到UActiveForm中?

时间:2013-08-12 22:49:05

标签: php yii

我查看了框架文档和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小部件选项,但它不起作用。我非常感谢您尝试理解这个框架的任何帮助。

1 个答案:

答案 0 :(得分:2)

我不知道UActiveForm是什么,但假设某种CActiveFormbeforeValidateafterValidate个选项。可以作为clientOptions的一部分使用:

'clientOptions'=>array(
    'beforeValidate' => new CJavaScriptExpression('function() { ... })'),
    'afterValidate' => new CJavaScriptExpression('function() { ... })'),
    'validateOnSubmit'=>true,
    'validateOnChange'=>false,
    'validateOnType'=>false,
),

您需要将函数代码包装在CJavaScriptExpression中,否则Yii会将其视为字符串并json_encode