javascript – Yii2 activeform ajax提交和验证

前端之家收集整理的这篇文章主要介绍了javascript – Yii2 activeform ajax提交和验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前实现ajax提交和验证的同时.我正在使用自定义功能
  1. $('.edit_form').submit(function (e) {
  2. e.preventDefault();
  3. var form = $(this);
  4. var formData = $(this).serialize();
  5. if (form.find('.has-error').length) {
  6. return false;
  7. }
  8.  
  9. $.ajax({
  10. url: form.attr("action"),type: form.attr("method"),data: formData,success: function (data) {
  11. ...
  12. },error: function () {
  13. alert("Something went wrong");
  14. }
  15. });
  16.  
  17. });

这里是PHP端,验证我的配置看起来像这样:

  1. $form = ActiveForm::begin([
  2. 'id' => "some_form",'action' => ['user/edit'],'options' => ['class' => 'edit_form'],'enableAjaxValidation' => false,'enableClientValidation' => true,]); ?>

我相信这不是实现我所需要的最好方法.特别是在验证错误的情况下,我用于防止提交的部分:

  1. if (form.find('.has-error').length) {
  2. return false;
  3. }

有什么建议么?如何使用Yii 2的内置设置正确地实现ajax提交和验证?

解决方法

使用beforeSubmit事件而不是提交,beforeSubmit只会在表单通过验证后被触发.
  1. $('form').on('beforeSubmit',function(e) {
  2. var form = $(this);
  3. var formData = form.serialize();
  4. $.ajax({
  5. url: form.attr("action"),success: function (data) {
  6. ...
  7. },error: function () {
  8. alert("Something went wrong");
  9. }
  10. });
  11. }).on('submit',function(e){
  12. e.preventDefault();
  13. });

猜你在找的Ajax相关文章