@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 просмотров
Пригласить эксперта
Ответы на вопрос 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 );
}
});
});
Ответ написан
Ваш ответ на вопрос

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

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