我正在使用Yii2开发一个项目,并对Pjax感到沮丧,因为它对我不起作用。这是我创建的带有pjax的简单gridview:
<?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错误。有谁能够帮助我?
更新
我的动作实际上很长。但是这是我认为与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
我现在使用kartik的gridview,我删除了PJax并将'pjax'=> true放入了gridview中,它成功完成了Ajax过滤,但不久后仍然重新加载了整个页面。
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'pjax' => true,
'pjaxSettings' => [
'neverTimeout' => true,
],
'columns' => [ /*columns same as above*/ ]
]);
最佳答案
请检查您的ID并将此javascript放在页面顶部
$('body').on('click','.reload',function(){
$.pjax.reload({container: '#w0-pjax'});
});
也使用下面的代码
<?php \yii\widgets\Pjax::begin(['linkSelector'=>'','id'=>'w0-pjax']); ?>
关于javascript - Pjax无法正常工作,请重新加载整个页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43773363/