Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将ajax选项添加到UAActiveForm?_Php_Yii - Fatal编程技术网

Php 如何将ajax选项添加到UAActiveForm?

Php 如何将ajax选项添加到UAActiveForm?,php,yii,Php,Yii,我已经查看了框架文档和yii论坛,但似乎找不到关于这方面的任何内容。我正在尝试向UAActiveForm小部件添加ajax选项。换句话说,我希望在单击此ajax表单的submit按钮时将加载的gif插入到div中。我知道如何在原始javascript/jquery/php中实现这一点,但我似乎无法用这个框架实现这一点。以下是我的begin小部件代码: <?php $form=$this->beginWidget('UActiveForm', array( 'id'=>'

我已经查看了框架文档和yii论坛,但似乎找不到关于这方面的任何内容。我正在尝试向UAActiveForm小部件添加ajax选项。换句话说,我希望在单击此ajax表单的submit按钮时将加载的gif插入到div中。我知道如何在原始javascript/jquery/php中实现这一点,但我似乎无法用这个框架实现这一点。以下是我的begin小部件代码:

<?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(); ?>
我特别想要的是beforeSend和complete ajax选项。我试着简单地添加

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

到UAActiveForm小部件选项,但它不起作用。如果您能帮助我理解这个框架,我将不胜感激。

我不知道什么是
UActiveForm
,但假设它是某种
CActiveForm
,那么在
客户端选项中可以使用
前验证
后验证
选项:

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

您需要将函数代码包装在
CJavaScriptExpression
中,否则Yii会将其视为字符串并
json\u encode
它。

谢谢!这是可行的,但是现在ajax帖子没有被发送,奇怪的是……你知道为什么会这样吗?如果没有,我会继续调试…啊,没关系。我想出来了。结果表明,匿名javascript函数需要返回true才能使表单继续。否则,它将什么也不做,并停止运行。
'clientOptions'=>array(
    'beforeValidate' => new CJavaScriptExpression('function() { ... })'),
    'afterValidate' => new CJavaScriptExpression('function() { ... })'),
    'validateOnSubmit'=>true,
    'validateOnChange'=>false,
    'validateOnType'=>false,
),