@Gleb316
Учиться и не бросать на половине.

В Yii2 ajax выводит одни и теже данные?

Всем привет. Создаю первый сайт на yii2 и на первой страницы подгружаю список серверов через ajax
так как нужно каждый сервер сначала через сокеты информацию о нем узнать, загрузка без него медленно грузит страницу:
$.ajax({
       url: '/index.php',
       type: 'post',
      success: function(data) {
        data = JSON.parse(data);
        $('table.table').html(data);
}        
  });


в контролере :
public function actionIndex() {
        $query = Servers::find();
        $countQuery = clone $query;
        $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => 3]);
        $pages->pageSizeParam = false;

        $models = $query->offset($pages->offset)
                ->limit($pages->limit)
                ->all();

if (Yii::$app->request->isAjax) {
    return json_encode(Servers::getservs($models));

      } else{
 return $this->render('index', compact('models','pages','servers'));
}
    }

и выводит постоянно первые 3 записи на всех страницах. Но если выводить без ajax, а просто вызвать
функцию то все работает отлично и она возвращает все записи. Не знаете в чем может быть проблема?
  • Вопрос задан
  • 353 просмотра
Решения вопроса 3
@Arik
По умолчанию yii2 смотрит параметр page в запросе Pagination.php#L87, когда у вас без ajax, то в пути скорее всего есть этот параметр. В коде с аякс вы никак не передаете page.
Ответ написан
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
А зачем вот это?
$countQuery = clone $query;
Не проще ли будет так? Да и правильней, я думаю.
$count =$query->count();
$pages = new Pagination(['totalCount' => $count, 'pageSize' => 3]);

И проверьте, что приходит с ajax при каждом запросе.
Ответ написан
@k2lhu
Добрый день, я писал вам ответ в прошлом вопросе про mvc с phpstart, рад видеть, что вы осваиваете yii2 ^)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы