Yii2 - 为什么 ajax 使用 Pjax 在 Listview 中更改页面无法正常工作
Yii2 - Why ajax change page in Listview with Pjax not working properly
我将 listview 与 pjax 块一起使用,这是我的视图页面:
<div class="main-video">
<div>نمایش</div>
<div id="data">
<?php
$model = new ActiveDataProvider([
'query' => FileInfos::find()->where(['type' => 2])->orderBy(['id'=>SORT_DESC]),
'pagination' => [
'pageSize' => 15,
],
]);
Pjax::begin([
'id'=> 'id-pjax',
'enablePushState' => false, // to disable push state
'enableReplaceState' => false, // to disable replace state,
'timeout'=> 999999999
]);
if(isset($model))
echo ListView::widget([
'dataProvider' => $model,
'itemView' => '/partials/_item',
'viewParams' => ['typeName' => 'video'],
]);
Pjax::end();
?>
</div>
<button id="btn-show">نمایش</button>
</div>
这是我的动作控制器代码:
public function actionVideo()
{
return $this->render('video');
}
点击下一页后,将重新加载整个页面。
在检查元素的网络选项卡中,我看到两个请求调用:
1 - video?page=2&per-page=15&_pjax=%23id-pjax
2 - video?page=2&per-page=15
第一个请求没有任何响应,第二个请求有渲染的视图页面,重新加载到那个。
我的代码有什么问题?
我如何解决 ajax 更改页面请求调用的问题?
这篇文章帮助了我:https://riptutorial.com/yii2/example/16529/how-to-use-pjax,
所以它通过使用以下代码更改 pjax begin 块来解决:
Pjax::begin([
'id'=> 'id-pjax-'.uniqid(),
'enablePushState' => false, // to disable push state
'enableReplaceState' => false, // to disable replace state,
'timeout'=> 999999999,
'clientOptions' => ['method' => 'POST']
]);
我将 listview 与 pjax 块一起使用,这是我的视图页面:
<div class="main-video">
<div>نمایش</div>
<div id="data">
<?php
$model = new ActiveDataProvider([
'query' => FileInfos::find()->where(['type' => 2])->orderBy(['id'=>SORT_DESC]),
'pagination' => [
'pageSize' => 15,
],
]);
Pjax::begin([
'id'=> 'id-pjax',
'enablePushState' => false, // to disable push state
'enableReplaceState' => false, // to disable replace state,
'timeout'=> 999999999
]);
if(isset($model))
echo ListView::widget([
'dataProvider' => $model,
'itemView' => '/partials/_item',
'viewParams' => ['typeName' => 'video'],
]);
Pjax::end();
?>
</div>
<button id="btn-show">نمایش</button>
</div>
这是我的动作控制器代码:
public function actionVideo()
{
return $this->render('video');
}
点击下一页后,将重新加载整个页面。
在检查元素的网络选项卡中,我看到两个请求调用:
1 - video?page=2&per-page=15&_pjax=%23id-pjax
2 - video?page=2&per-page=15
第一个请求没有任何响应,第二个请求有渲染的视图页面,重新加载到那个。
我的代码有什么问题?
我如何解决 ajax 更改页面请求调用的问题?
这篇文章帮助了我:https://riptutorial.com/yii2/example/16529/how-to-use-pjax, 所以它通过使用以下代码更改 pjax begin 块来解决:
Pjax::begin([
'id'=> 'id-pjax-'.uniqid(),
'enablePushState' => false, // to disable push state
'enableReplaceState' => false, // to disable replace state,
'timeout'=> 999999999,
'clientOptions' => ['method' => 'POST']
]);