Добрый вечер! Вопрос, собственно, в названии. Куда копать и что исследовать, чтобы решить проблему?
Вот самая простейшая разметка:
<button onclick="get_content();">Отобразить таблицу</button>
<div id="content">
Сюда загрузится GridView от kartik-v
</div>
После нажатия кнопки загрузка идёт самым прямолинейным способом:
function get_content()
{
$.ajax({
url: '/some/data',
type: 'get',
data: {id: 123},
success: function(answer) {
$('#content').html(answer);
},
});
}
В контроллере вызываемое действие имеет такой вид:
public function actionData($id)
{
$tab_content = new TabContent;
$parameters = $tab_content->getData($id); // возвращает поисковую модель, провайдер данных и вспомогательные переменные
return $this->renderAjax('view_name', $parameters);
}
Это всё работает и нареканий нет. GridView отображается, работают его фильтры и сортировка. Но на этой же странице есть кнопка, где вызывается такой код:
$.pjax.reload({container:"#kv-pjax-data"});
После его выполнения происходит перезагрузка GridView (что и должно), но после этого сразу начинается перезагрузка всей страницы. Почему так происходит?
Таймаута хватает, я его увеличил и возвращал для проверки пустой GridView. Параллельного pjax-запроса у меня нет ни до, ни после, поэтому я исключаю, что следующий начал выполняться до окончания предыдущего.
spoiler
Настройки виджета такие:
<?= GridView::widget([
'id' => 'data-grid-view',
'dataProvider' => $selectedData,
'filterModel' => $searchSelectedData,
'pjax' => true,
'pjaxSettings' => [
'options' => [
'id' => 'kv-pjax-data',
'enablePushState' => false,
],
],
'columns' => $columns,
]); ?>