0
我正在開發一個使用Yii2的項目,並且因Pjax從來不適合我而感到沮喪。這是一個簡單的gridview,我創建了pjax:Pjax不工作,重新加載整個頁面
<?php Pjax::begin(['id' => 'member-list-pjax', 'timeout' => 5000]);?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'member_card_number',
'member_name',
[
'attribute' => 'member_address',
'format' => 'raw',
],
'member_phone1',
'member_phone2',
[
'attribute' => 'member_type',
'value' => function ($model, $key, $index, $column){
return $model->getTypeLabel($model->member_type);
},
'filter' => $searchModel->getTypeLabel(),
],
],
]); ?>
<?php Pjax::end();?>
Pjax根本不起作用。當我在gridview的過濾器中搜索某些東西時,它會重新加載整個頁面。也沒有JavaScript錯誤。有誰能夠幫助我?
UPDATE
我的動作其實很長。但這裏要說的是,我認爲是關係到GridView中的一部分:
$searchModel = new MemberSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
if (isset($_GET['MemberSearch']))
$searchModel->attributes = $_GET['MemberSearch'];
return $this->render('form', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
更新2
我現在用卡爾蒂克的GridView中,我刪除了PJax,並把「pjax」在GridView =>真,它成功地做了Ajax過濾器,但仍然不久後重新加載整個頁面。
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'pjax' => true,
'pjaxSettings' => [
'neverTimeout' => true,
],
'columns' => [ /*columns same as above*/ ]
]);
檢查你的Ajax響應,如果有pjax將加載整個頁面HTML目前在迴應 –
檢查ID,也許是重複的。你也可以檢查這個[link](http://www.yiiframework.com/forum/index.php/topic/65794-pjax-reload-gridview-should-stay-on-same-page/) – tigrasti
嘗試設置更高用於測試目的的超時(10000)(如果在超時時間內沒有返回200 OK,頁面將被重新加載)。 你的行爲代碼與生成的代碼有什麼不同? –