Yii2-Pjax搜索参数

时间:2019-12-28 00:52:09

标签: php ajax yii2 pjax

我尝试使用Ajax制作搜索表单,当我更改下拉菜单时应设为pjax,并用div重新加载页面的特定dataProvider

controller.php

public function actionIndex(){

        $searchModel = new NewsletterSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
              'searchModel' => $searchModel,
              'dataProvider' => $dataProvider,
        ]);
    }

_search.php

<?php $form = ActiveForm::begin([
        'id' => 'form1',
        'options' => ['data-pjax' => true ],
    ]); ?>

    <?= $form->field($model, 'search_year')->dropDownList(['2018' => '2018', '2019' => '2019'], ['id' => 'yearDrop']) ?>

    <?php ActiveForm::end(); ?>

view.php

 <?= $this->render('_search', ['model' => $searchModel]); ?>

<?php Pjax::begin(['id' => 'gridData', 'formSelector' => '#form1']) ?>

       <?php
            foreach ($dataProvider->getModels() as $a){
                echo $a->id . '<br/>';
            }
       ?>

<?php Pjax::end(); ?>

<?php

$url = Url::toRoute(['/newsletter/index']);

$script = <<< JS

  $('#yearDrop').on('change', function(e) {
       e.preventDefault();
        let form = $("form");

        $.ajax({
          url: '$url',
          method:'get',
          data:form.serialize(),
      }).done(function(response){
          $.pjax.reload({container: "#gridData"});
      }).fail(function(response){
         console.log(response);
      });
  });

JS;
$this->registerJs($script);
?>

当我执行此操作时,什么都没发生,但是在控制台中我有2个xhr request,但是看起来Pjax没有重新加载,或者如果重新加载,他失去了GET参数,因为在第二个{ {1}}成为空参数。

0 个答案:

没有答案