使用Ajax过滤器和分页同时Yii2

时间:2018-06-03 01:00:07

标签: php ajax yii2

我遇到了一个新问题,即我如何一起使用ajax过滤器和分页。

分页工作正常但是在使用ajax过滤器之后(例如:按名称desc和...排序),它显示了两个结果,其中一个是没有ajax的第一个结果,其中一个是真正的过滤器,只是在第一页但是当页面改变时,ajax结果不起作用。

这是Sitecontroller

的功能
public function actionProd2(){

        $post=Yii::$app->request->post();
        print_r($post);

        if(isset($post['sel'])){
             if($post['sel']=='name_down')
                  $model = Products::find()->select('name')
                                           ->orderby(['name' => SORT_DESC]); 
             else if($post['sel']=='name_up')
                  $model = Products::find()->select('name')
                                           ->orderby(['name' => SORT_ASC]); 
        }else{
            $model = Products::find()->select('name');
        }

        $count=$model->count();

        $pagination = new Pagination(['totalCount' => $count, 
                                      'defaultPageSize' => 2
                                    ]);

       $model1 = $model->offset($pagination->offset)
                       ->limit($pagination->limit)
                       ->all();

       return $this->render('prod2', ['models' => $model1,
                                      'pagination' => $pagination,
                                     ]);
}

这是view/site

中的prod2
<?php
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \frontend\models\SignupForm */
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
$this->title = 'products';
$this->params['breadcrumbs'][] = $this->title;
?><?php

echo "<select id='sel1'>

<option id='name_up'>name_up</option>
<option id='name_down'>name_down</option>
<option id='price_up'>price_up</option>
<option id='price_down'>price_down</option>

</select>";
echo "<br><br>";
echo '<div class=d1></div>';
?>

<?php
   use yii\widgets\LinkPager;
?>
<?php foreach ($models as $model): ?>

 <div class="list-group">
  <a href="#" class="list-group-item active">
    <h4 class="list-group-item-heading"><?= $model->name; ?></h4>
  </a>
</div>


   <br/>
<?php endforeach; ?>
<?php
   // display pagination
   echo LinkPager::widget([
      'pagination' => $pagination,
   ]);
?>



<?php
$js = <<< JS

$('#sel1').change(function(){
var sel= $('#sel1').children(':selected').attr('id');
var mydata={'sel':sel};
   $.ajax({
            url: 'http://localhost/market_pro1/web/index.php?r=site/prod2',
            data:mydata,
            //dataType: "json",
            type : 'post',
            success: function(data) {

               $('.d1').html(data);              
            }
        });

});

JS;
$this->registerJs($js);

我怎么能解决它,我只是看到我的ajax结果和更改页码后我的ajax结果没有改变?有可能吗? 我使用了不同的控制器和视图,但结果与此相同。

0 个答案:

没有答案