Yii2 Pjax无法正常工作

前端之家收集整理的这篇文章主要介绍了Yii2 Pjax无法正常工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用Pjax刷新gridview但不知何故它不起作用.这是代码

_search.PHP

  1. <?PHP
  2.  
  3. use yii\helpers\Html;
  4. use yii\widgets\ActiveForm;
  5. use yii\widgets\Pjax;
  6.  
  7. $this->registerJs("
  8. $('#btnAjaxSearch').click(function(){
  9. $.ajax({
  10. type: 'get',data: $('.bank-search form').serializeArray(),success: function (data) {
  11. $.pjax.reload({container:\"#bank\"});
  12. },error: function (XMLHttpRequest,textStatus,errorThrown) {
  13. alert('error');
  14. }
  15. });
  16. return false;
  17. });
  18. ",\yii\web\View::POS_END,'bank-search');
  19. ?>
  20.  
  21. <div class="bank-search">
  22. <?PHP Pjax::begin(['id' => 'bank-form']); ?>
  23. <?PHP $form = ActiveForm::begin([
  24. 'action' => ['index'],'method' => 'get',]); ?>
  25.  
  26. <?= $form->field($model,'bank_name') ?>
  27.  
  28. <?= $form->field($model,'state') ?>
  29.  
  30. <?= $form->field($model,'district') ?>
  31.  
  32. <?= $form->field($model,'city') ?>
  33.  
  34. <div class="form-group">
  35. <?= Html::Button('Search',['class' => 'btn btn-primary','id' => 'btnAjaxSearch']) ?>
  36. </div>
  37.  
  38. <?PHP ActiveForm::end(); ?>
  39. <?PHP Pjax::end(); ?>
  40.  
  41. </div>

的index.PHP

  1. <?PHP
  2.  
  3. use yii\helpers\Html;
  4. use yii\grid\GridView;
  5. use yii\widgets\Pjax;
  6.  
  7. $this->title = 'Banks';
  8. $this->params['breadcrumbs'][] = $this->title;
  9. ?>
  10. <div class="bank-index">
  11.  
  12. <h1><?= Html::encode($this->title) ?></h1>
  13. <?PHP echo $this->render('_search',['model' => $searchModel]); ?>
  14.  
  15. <p>
  16. <?= Html::a('Create Bank',['create'],['class' => 'btn btn-success']) ?>
  17. </p>
  18. <?PHP Pjax::begin(['id' => 'bank']); ?>
  19. <?= GridView::widget([
  20. 'dataProvider' => $dataProvider,'filterModel' => $searchModel,'columns' => [
  21. ['class' => 'yii\grid\SerialColumn'],'id','bank_name','state','district','city',// 'branch',['class' => 'yii\grid\ActionColumn'],],]); ?>
  22. <?PHP Pjax::end(); ?>
  23. </div>

调节器

  1. /**
  2. * Lists all Bank models.
  3. * @return mixed
  4. */
  5. public function actionIndex()
  6. {
  7. $searchModel = new BankSearch();
  8. $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  9.  
  10. return $this->render('index',[
  11. 'searchModel' => $searchModel,'dataProvider' => $dataProvider,]);
  12. }

简单搜索正在运行,但Pjax不是.我是Yii2的新手,所以任何帮助都将不胜感激.谢谢.

谢谢爱丁.它帮助我解决了这个问题.这就是我做的.它可能会帮助面临同样问题的人.

正如Edin提到的,你需要将url和搜索参数一起传递给Pjax以刷新gridview.

这是我编辑的代码

  1. $js = <<<JS
  2. // get the form id and set the event
  3. $('#bank-form-id').on('beforeSubmit',function(e) {
  4. var form = $(this);
  5. if(form.find('.has-error').length) {
  6. return false;
  7. }
  8. $.ajax({
  9. url: form.attr('action'),type: 'post',data: form.serialize(),success: function(response) {
  10. var csrf = yii.getCsrfToken();
  11. var bank_name = $('#banksearch-bank_name').val();
  12. var state = $('#banksearch-state').val();
  13. var district = $('#banksearch-district').val();
  14. var city = $('#banksearch-city').val();
  15. var url = form.attr('action')+ '&_csrf='+csrf+'&BankSearch[bank_name]='+bank_name+'&BankSearch[state]='+state+'&BankSearch[district]='+district+'&BankSearch[city]='+city;
  16. $.pjax.reload({url: url,container:'#bank'});
  17. }
  18. });
  19. }).on('submit',function(e){
  20. e.preventDefault();
  21. });
  22. JS;
  23. $this->registerJs($js);

猜你在找的PHP相关文章