yii2,分页没有工作后ajax和渲染部分

yii2,分页没有工作后ajax和渲染部分

问题描述:

我正在搜索网站上的产品。当你第一次加载页面时,你会看到所有的产品。 产品模块包装在pjax中,分页由组件LinkPager执行。yii2,分页没有工作后ajax和渲染部分

通过ajax执行对服务器的搜索请求,并通过renderPartial发现一块产品。如果我尝试切换到下一页,则会重置搜索结果,并再次看到所有产品。事实证明,执行renderPartital后,小部件LinkPager无法正常工作。

视图:

<div class="search-wrap"> 
<input type="text" class="search-input" id="search" placeholder="Поиск по названию" name="p"> 
<button type="submit" class="btn filter-search-btn-menu" id="btns">Поиск</button> 
<script> 
$('#btns').on('click', function(e){ 
    var search = $('#search').val(); 
     $.ajax({ 
     type: 'POST', 
     url: "/person/notice", 
     data: { 'search': search }, 
     cache: false, 
     success: function (data) { 
       $('#allnotice').html(data); 
      }); 
}); 
</script> 
</div> 

<div id="allnotice"> 
<?php yii\widgets\Pjax::begin();?> 
<div id="up"> 

<?php if ($offerings) foreach($offerings as $one): ?> 
<div class="preview-notice-wrap"> 
<div class="preview-notice-inner"> 
     <h4><?php echo $one->title; ?></h4> 
     <div class="preview-notice"> 
       <div> 
         <p><?php 
           $price = $one->start_price; 
           echo number_format($price) . ' ₽'; 
         ?></p> 
       </div> 
       <div> 
         <p><?php 
         $date = $one->created; 
         echo Yii::$app->formatter->asDate($date, 'd MMMM y'); 
         ?> </p> 

       </div> 
     </div> 
    </div> 
</div> 
<?php endforeach; ?> 
<div class="notice-pagination-wrap preview-notice-pagination"> 
<?= \app\components\MyPager::widget([ 
    'pagination' => $pages, 
    'maxButtonCount' =>7, 
    'prevPageLabel' => false, 
    'nextPageLabel' => false, 
    'activePageCssClass' => ['class' => 'page-active'], 
    'options' => ['class' => 'page-test'], 
    'linkOptions' => ['class' => 'page-link'], 



    ]); ?> 


</div> 

</div> 
<?php yii\widgets\Pjax::end(); ?> 
</div> 

控制器:

​​
+0

我有同样的问题。你能找到解决方案吗? – goseo

我有一个解决方案:在URL

url: "/person/notice?search="+search, 

放值。

$('#btns').on('click', function(e){ 
    var search = $('#search').val(); 
     $.ajax({ 
     type: 'POST', 
     url: "/person/notice?search="+search, 
     data: { 'search': search }, 
     cache: false, 
     success: function (data) { 
       $('#allnotice').html(data); 
      }); 
}); 

,您可以看看它的控制器

if(isset($_POST['search'])) 
     $search_word = trim($_POST['search']); 
    if(isset($_GET['search'])) 
     $search_word = trim($_GET['search']); 
+0

这当然不起作用! – goseo