Задать вопрос
@DivineMgn

Как задать периодическое обновление GridView?

Хотелось бы периодически обновлять отдельные поля (подтягивать данные из бд) GridView через определенный период без перезагрузки всей страницы.
На данный момент имею вот такую реализацию:
View:
<?php
$script = <<< JS
$(module).ready(function() {
    setInterval(function() {     
      $.pjax.reload({container:'#state-dependence'});
    }, 5000); 
});
JS;
$this->registerJs($script);
?>

....
<?php Pjax::begin(); ?>
    <?= GridView::widget([ 'id'=>'module',
        'dataProvider' => $dataProvider,
        'layout' => '{items}',
        'tableOptions' => ['class' => 'table table-striped table-bordered'],
        'columns' => [
             'Id', 
             'Title',
             [ 
               'format' => 'raw',
               'value' => function ($model, $key, $index, $column) {
                return Html::tag('span', Html::encode($model::GetStringState($model->State)), 
                                ['id' => 'state-dependence']);
               }
             ],
             [ 
               'format' => 'raw',
               'value' => function ($model, $key, $index, $column) {
                return Html::tag('span', Html::encode($model->Value), 
                                ['id' => 'state-dependence']);
               }
             ]
             
        ],
    ]); ?>
<?php Pjax::end(); ?>

Но в такой реализации происходит полное обновление страницы. Есть ли более правильная реализация периодического обновления контента?
  • Вопрос задан
  • 230 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Programep
Добавлять уникальный id к полям (row2_col12_tbname), например.
Сделать через ajax функцию:
setInterval(function() {
$.ajax({
url: "script.php",
method: "POST",
data: { id : menuId },
dataType: "html",
done: function( msg ) {
$( "#log" ).html( msg );
},
fail: function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
}
});
});
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы