2017-05-04 61 views
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*/ ] 
]); 
+0

檢查你的Ajax響應,如果有pjax將加載整個頁面HTML目前在迴應 –

+0

檢查ID,也許是重複的。你也可以檢查這個[link](http://www.yiiframework.com/forum/index.php/topic/65794-pjax-reload-gridview-should-stay-on-same-page/) – tigrasti

+0

嘗試設置更高用於測試目的的超時(10000)(如果在超時時間內沒有返回200 OK,頁面將被重新加載)。 你的行爲代碼與生成的代碼有什麼不同? –

回答

0

請檢查您的ID,並把這個JavaScript在頁面的頂部

$('body').on('click','.reload',function(){ 
    $.pjax.reload({container: '#w0-pjax'}); 
}); 

還可以使用下面的代碼

<?php \yii\widgets\Pjax::begin(['linkSelector'=>'','id'=>'w0-pjax']); ?>  
+0

它沒有工作。該請求被取消。 –

相關問題