我遇到了一个新问题,即我如何一起使用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
<?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结果没有改变?有可能吗? 我使用了不同的控制器和视图,但结果与此相同。