脚本宝典收集整理的这篇文章主要介绍了php – Yii2:如何使用AJAX验证表单,然后再次使用AJAX提交数据,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
>首先通过AJAX验证我的表单,因为我有一个unique字段.
>然后,如果验证正确,则通过AJAX将表单数据提交给表单操作.
这是我到目前为止所得到的:
在我看来:
<?PHP $form = ActiveForm::begin([ 'id' => 'subscribe-form','action' => ['sITe/subscribe'],'validationUrl' => ['site/validate-subscribe'],'validateOnSubmit' => true,'enableAjaxValidation' => true,]) ?> <?= $form->field($model,'name')->input('text',['class' => 'w-input']) ?> <?= $form->field($model,'email')->input('text',['class' => 'w-input']) ?> <div class="form-group"> <?= HtML::submitButton('SUSCRIBIRSE',['class' => 'w-inline-block BTn','name' => 'LOGin-button']) ?> </div> <?PHP ActiveForm::end() ?>
在我的控制器中:
public function actionValidateSubscribe(){ if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; $model = new Subscription(Yii::$app->getRequest()->getBodyParams()['Subscription']); if (!$model->validate()) { return ActiveForm::validate($model); } } } public function actionSubscribe() { if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; $model = new Subscription(Yii::$app->getRequest()->getBodyParams()['Subscription']); if(!$model->validate()){ throw new NotAcceptableHttPException('Tiene errores de validación en la forma'); } if($model->save()){ Yii::$app->mailer->compose('subscription',['model'=>$model]) ->setTo([$model->name => $model->email]) ->setFrom(['test' => 'info@test.COM']) ->setSubject('Por favor confirme su suscripción') ->send(); } $response = [ 'data'=>$model->getAttributes(),'success'=>'true' ]; return $response; } }
在我的JS中:
$(document).ready(function () { $('body').on('beforeSubmit','form#subscribe-form',function () { VAR form = $(this); // return false if form still have some validation errors if (form.find('.has-error').length) { return false; } // submit form $.ajax({ url : form.attr('action'),type : 'post',data : form.serialize(),success: function (response) { // do something with response },error : function () { } }); return false; }); });
问题是当我在ActiveForm中将“enableAjaxValidation”设置为true时,yii.ActiveForm.js没有触发afterVAlidate或beforeSubmit事件.
以上是脚本宝典为你收集整理的php – Yii2:如何使用AJAX验证表单,然后再次使用AJAX提交数据全部内容,希望文章能够帮你解决php – Yii2:如何使用AJAX验证表单,然后再次使用AJAX提交数据所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。