【问题标题】:Pjax not working, reload the whole pagePjax 不工作,重新加载整个页面
【发布时间】:2017-05-04 03:26:31
【问题描述】:

我正在使用 Yii2 开发一个项目,但对 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错误。有人可以帮帮我吗?

更新

我的动作其实很长。但这里是我认为与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 Filter成功了,但是没多久还是重新加载了整个页面。

GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'pjax' => true,
    'pjaxSettings' => [
        'neverTimeout' => true,
    ],
    'columns' => [ /*columns same as above*/ ]
]);

【问题讨论】:

  • 检查你的ajax响应,如果响应中有html,pjax会加载整个页面
  • 检查 id,可能是重复的。您也可以查看link
  • 尝试设置更高的超时 (10000) 以进行测试(如果在超时内没有返回 200 OK 的结果,则重新加载页面)。您的操作代码与生成的操作代码有何不同?
  • @NitinP 为什么它返回 html 作为响应?
  • @tigrasti 没有 id 重复

标签: javascript php gridview yii2 pjax


【解决方案1】:

请检查您的 id 并将此 javascript 放在页面顶部

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

也可以使用下面的代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2013-06-21
    • 2013-09-18
    • 2016-04-19
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多