0

我查看了框架文档和 yii 论坛,但似乎找不到任何相关内容。我正在尝试将 ajax 选项添加到 UActiveForm 小部件。换句话说,我希望在单击此 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 和 complete ajax 选项。我试过简单地添加

'ajax'=> array(
    'beforeSend'=> 'function() {
        alert("testing, ready");
    }',
    'complete'=> 'function(){
        alert("testing,done");
    }',
),

到 UActiveForm 小部件选项,但它不起作用。在尝试理解此框架时,我将不胜感激。

4

1 回答 1

2

我不知道 aUActiveForm是什么,但假设它是某种可以用作其中一部分的CActiveForm选项:beforeValidateafterValidateclientOptions

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

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

于 2013-08-12T22:52:55.047 回答