首页 > PHP开发 > Yii2 > Yii2.0 ActiveForm组件的ajax提交方法
2016
07-07

Yii2.0 ActiveForm组件的ajax提交方法

ActiveForm如何异步提交?

1.首先在views层的ActiveForm中配置以下属性

$form = ActiveForm::begin([
    'action' => Url::to(['post/save']),           //此处为请求地址 Url用法查看手册
    'enableAjaxValidation' => true,
        'validationUrl' => Url::to(['post/validate']),     //数据异步校验
]);

2.配置好表单属性之后,在控制器中添加对应的方法

validateUrl对应的方法

//该方法是异步校验字段,输入框失去焦点之后自动会自动请求改地址
public function actionValidate(){
    $model = new PostModel();
    if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {        
        Yii::$app->response->format = Response::FORMAT_JSON;        
        return ActiveForm::validate($model);
    }
}

action对应的方法

//该方法是数据保存方法
public function actionSave()
{
    $model = new PostCatModel();
    if ($model->load(Yii::$app->request->post())) {
        Yii::$app->response->format = Response::FORMAT_JSON;
        return ['status' => $model->save()];
    }        
}

除此之外,还要写一段提交的js

//此处点击按钮提交数据的jquery
$('.btn').click(function () {
$.ajax({
        url: "/post/save.html",
        type: "POST",
        dataType: "json",
        data: $('form').serialize(),
        success: function(Data) {
            if(Data.status)
                alert('保存成功');
          else
            alert('保存失败')
        },
        error: function() {
            alert('网络错误!');
        }
    });
    return false;
});

注:actionSave中对应的命名空间要加上,否则会报错

比如 Response 和 ActiveForm 

use yiiwebResponse;
use yiiootstrapActiveForm;

上面就是ActiveForm对应的异步提交方法

编程技巧