Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2-activeformajax提交_Ajax_Yii2_Active Form - Fatal编程技术网

Yii2-activeformajax提交

Yii2-activeformajax提交,ajax,yii2,active-form,Ajax,Yii2,Active Form,如何使用ActiveForm满足这些要求 使用ajax提交表单 在使用ajax提交之前:检查是否存在错误 提交后:如果服务器响应保存结果不成功,则显示字段输入下的字段错误 这是您的表单。我更喜欢使用不同的操作进行验证和保存。您可以将它们合并到单个方法中 <?php $form = \yii\widgets\ActiveForm::begin([ 'id' => 'my-form-id', 'action' => 'save-url', 'enableA

如何使用ActiveForm满足这些要求

  • 使用ajax提交表单

  • 在使用ajax提交之前:检查是否存在错误

  • 提交后:如果服务器响应保存结果不成功,则显示字段输入下的字段错误


    • 这是您的表单。我更喜欢使用不同的操作进行验证和保存。您可以将它们合并到单个方法中

      <?php $form = \yii\widgets\ActiveForm::begin([
          'id' => 'my-form-id',
          'action' => 'save-url',
          'enableAjaxValidation' => true,
          'validationUrl' => 'validation-rul',
      ]); ?>
      
      <?= $form->field($model, 'email')->textInput(); ?>
      
      <?= Html::submitButton('Submit'); ?>
      <?php $form->end(); ?>
      
      这就是拯救行动。在“验证输入数据的安全性”中:

      public function actionSave()
      {
          $model = new MyModel();
          $request = \Yii::$app->getRequest();
          if ($request->isPost && $model->load($request->post())) {
              \Yii::$app->response->format = Response::FORMAT_JSON;
              return ['success' => $model->save()];
          }
          return $this->renderAjax('registration', [
              'model' => $model,
          ]);
      }
      
      此代码将在actionValidate()和中验证表单。要通过AJAX提交表单,请使用beforeSubmit事件。在javascript文件中写入:

      $(document).on("beforeSubmit", "#my-form-id", function () {
          // send data to actionSave by ajax request.
          return false; // Cancel form submitting.
      });
      
      仅此而已。

      使用ajax提交表单。 在使用ajax提交之前:检查是否存在错误。yii显示错误(如果默认情况下有……:)

      使用yii\helpers\Html;
      使用yii\bootstrap\ActiveForm;
      使用yii\widgets\Pjax;
      /*@var$this yii\web\View*/
      /*@var$model backend\models\search\JobSearch*/
      /*@var$form yii\bootstrap\ActiveForm*/
      ?>
      $(文档).ready(函数(){
      $('body')。在('beforesmit','form#dynamic-form111',函数(){
      变量形式=$(此);
      //如果表单仍然有一些验证错误,则返回false
      if(form.find('.has error').length)
      {
      返回false;
      }
      //提交表格
      $.ajax({
      url:form.attr('action'),
      键入:“get”,
      数据:form.serialize(),
      成功:功能(响应)
      {
      var getupdatedata=$(响应).find('filter\u id\u test');
      //$.pjax.reload(“#注意_update_id”);用于pjax更新
      $('yiiikap').html(getupdatedata);
      //console.log(getupdatedata);
      },
      错误:函数()
      {
      log(“内部服务器错误”);
      }
      });
      返回false;
      });
      });
      
      事实上,这正是Yii在ActiveForm中已经提供的功能-包括JavaScript,以便在将数据发送到服务器之前在客户端自动验证。@robsch它不会使用用户要求的AJAX提交表单。我需要根据AJAX调用响应决定是否返回false或true。但是在ajax响应之前,将执行返回false。请给我建议一种方法。@Pravin Ajax是异步的,通常不能从其响应返回结果。我不太懂javascript。但是你可以找。可能会对您有所帮助。另请参阅指南-ajax表单提交:
      $(document).on("beforeSubmit", "#my-form-id", function () {
          // send data to actionSave by ajax request.
          return false; // Cancel form submitting.
      });
      
      use yii\helpers\Html;
      use yii\bootstrap\ActiveForm;
      use yii\widgets\Pjax;
      
      /* @var $this yii\web\View */
      /* @var $model backend\models\search\JobSearch */
      /* @var $form yii\bootstrap\ActiveForm */
      ?>
      
      <div class="job-search">
      
          <?php $form = ActiveForm::begin([
              'action' => ['index'],
              //'method' => 'get',
              'options' => ['id' => 'dynamic-form111']
          ]); ?>
      
          <?php echo $form->field($searchModel, 'id') ?>
      
          <?php echo $form->field($searchModel, 'user_id') ?>
      
          <?php echo $form->field($searchModel, 'com_id') ?>
      
          <?php echo $form->field($searchModel, 'job_no') ?>
      
          <?php echo $form->field($searchModel, 'court_id') ?>
      
          <?php // echo $form->field($model, 'case_no') ?>
      
          <?php // echo $form->field($model, 'plainttiff') ?>
      
          <?php // echo $form->field($model, 'defendant') ?>
      
          <?php // echo $form->field($model, 'date_fill') ?>
      
          <?php // echo $form->field($model, 'court_date') ?>
      
          <?php // echo $form->field($model, 'status_id') ?>
      
          <?php // echo $form->field($model, 'created_at') ?>
      
          <?php // echo $form->field($model, 'updated_at') ?>
      
          <div class="form-group">
              <?php echo Html::submitButton('Search', ['class' => 'btn btn-primary','id'=>'submit_id']) ?>
              <?php echo Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
          </div>
      
          <?php ActiveForm::end(); ?>
      
      </div>  
      <script type="text/javascript">
          $(document).ready(function () {
              $('body').on('beforeSubmit', 'form#dynamic-form111', 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   : 'get',
                  data   : form.serialize(),
                  success: function (response) 
                  {
                      var getupdatedata = $(response).find('#filter_id_test');
                      // $.pjax.reload('#note_update_id'); for pjax update
                      $('#yiiikap').html(getupdatedata);
                      //console.log(getupdatedata);
                  },
                  error  : function () 
                  {
                      console.log('internal server error');
                  }
                  });
                  return false;
               });
          });
      </script>