ActiveForm如何异步提交?
1.首先在views层的ActiveForm中配置以下属性
1 2 3 4 5 | $form = ActiveForm::begin([ 'action' => Url::to([ 'post/save' ]), //此处为请求地址 Url用法查看手册 'enableAjaxValidation' => true, 'validationUrl' => Url::to([ 'post/validate' ]), //数据异步校验 ]); |
2.配置好表单属性之后,在控制器中添加对应的方法
validateUrl对应的方法
1 2 3 4 5 6 7 8 | //该方法是异步校验字段,输入框失去焦点之后自动会自动请求改地址 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对应的方法
1 2 3 4 5 6 7 8 9 | //该方法是数据保存方法 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //此处点击按钮提交数据的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
1 2 | use yiiwebResponse; use yiiootstrapActiveForm; |
上面就是ActiveForm对应的异步提交方法
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/5133/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取