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对应的异步提交方法
- 本文固定链接: https://zxbcw.cn/post/5133/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)