1

私はyiiフレームワークでajaxベースのフォーム送信を試していますここに私のビューコードがあります

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'users-form',
    'enableAjaxValidation'=>true,
    'clientOptions'=>array('validateOnSubmit'=>true, 'validateOnType'=>false),
)); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,'user_username'); ?>
        <?php echo $form->textField($model,'user_username',array('size'=>45,'maxlength'=>45)); ?>
        <?php echo $form->error($model,'user_username'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'user_password'); ?>
        <?php echo $form->textField($model,'user_password',array('size'=>45,'maxlength'=>45)); ?>
        <?php echo $form->error($model,'user_password'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'user_role'); ?>
        <?php echo $form->dropDownList($model,'user_role', CHtml::listData($dropDownData, 'role_id', 'role_title')); ?>
        <?php echo $form->error($model,'user_role'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'user_company_id'); ?>
        <?php echo $form->textField($model,'user_company_id'); ?>
        <?php echo $form->error($model,'user_company_id'); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::ajaxSubmitButton('Create User', CHtml::normalizeUrl(array(''), 
            array(
                'beforeSend'=>'function() {
                                    $(".createUser").attr("disabled","disabled");
                                }',
                'success'=>'function(data) {
                                alert(data);
                                if( data == "sent" ) {
                                    $(".ajaxMessage").text("User has been successfully created");
                                } else {
                                    $(".ajaxMessage").text("Oops! It looks there is some error in your form");
                                }
                                $(".createUser").removeAttr("disabled");
                            }'
            ),
            array('class'=>'createUser')
        )); ?>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->
<div class="ajaxMessage"></div>

変数でajax応答を取得したいと思います。これがコントローラーコードです

if(isset($_POST['Users']))
{
    if( Yii::app()->request->isAjaxRequest )
        echo 'ajax get';
    else
        echo 'ajax not get';
}

ファイアバグでは、応答が正しく生成されるのを見ましたが、変数に格納されていません。ビューコードは、次のリンクを使用して作成されます:
http ://www.yiiframework.com/forum/index.php/topic/8219-solved-ajax-form-submission/

4

1 に答える 1

2

javascriptdataは、コントローラーからエコーしたものになります。したがってdata=="sent" 、jqueryのsuccessコールバックをチェックする場合echo 'sent';は、アクションから実行します。

normalizeUrl関数内にajaxOptionsを含め、次のように変更します。

<div class="row buttons">
    <?php echo CHtml::ajaxSubmitButton('Create User', CHtml::normalizeUrl(array('')), 
        array(
            'beforeSend'=>'function() {
                                $(".createUser").attr("disabled","disabled");
                            }',
            'success'=>'function(data) {
                            alert(data);
                            if( data == "sent" ) {
                                $(".ajaxMessage").text("User has been successfully created");
                            } else {
                                $(".ajaxMessage").text("Oops! It looks there is some error in your form");
                            }
                            $(".createUser").removeAttr("disabled");
                        }'
        ),
        array('class'=>'createUser')
    ); ?>
于 2012-04-26T11:59:14.650 に答える