我正在尝试在yii2项目中使用Pjax小部件.
我的目标是更新一些内容.
我的代码:查看div #formsection
<?php Pjax::begin(); ?>
<div id="formsection"></div>
<?php foreach ($tree as $id => $name): ?>
<?php echo Html::a(
$name,
['update', 'id'=>$id],
['data-pjax'=> '#formsection']) ?>
<?php endforeach ?>
<?php Pjax::end(); ?>
Run Code Online (Sandbox Code Playgroud)
更新动作
public function actionUpdate($id)
{
return $this->renderAjax('update');
}
Run Code Online (Sandbox Code Playgroud)
当我单击链接时,所有pjax div内容都将被服务器的响应替换.我想要#formsection更新内容.
更多信息:这是Pjax小部件在页面中生成的js代码.
jQuery(document).ready(function () {
jQuery(document).pjax("#w0 a", "#w0", {"push":true,"replace":false,"timeout":1000,"scrollTo":false});
jQuery(document).on('submit', "#w0 form[data-pjax]", function (event) {jQuery.pjax.submit(event, '#w0', {"push":true,"replace":false,"timeout":1000,"scrollTo":false});});
});
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题?
我解决了这个问题.我不得不改变观点.
<div id="categories">
<?php foreach ($tree as $id => $name): ?>
<?php echo Html::a(
$name,
['update', 'id'=>$id],
['data-pjax'=> '#formsection']) ?>
<?php endforeach ?>
</div>
<?php Pjax::begin(['id'=>'formsection', 'linkSelector'=>'#categories a']); ?>
<?php Pjax::end(); ?>
Run Code Online (Sandbox Code Playgroud)
小智 6
适当的Pjax解决方案
如果您不想在其间放置标签数据Pjax::begin(),请Pjax::end()
使用Pjax::widget()并包含以下linkSelector选项:
Pjax::widget(['id' => 'formsection', 'linkSelector' => '#categories a']);
Run Code Online (Sandbox Code Playgroud)
其中是单击链接formsection时接收Pjax返回的数据的元素的id #categories a.#categories a是一个JQuery选择器
有点晚了,但我想添加一些内容 - 无论您将 pjax id 属性设置为什么,都将填充 ajax 响应。在我的情况下,我只想用“已保存”消息进行回复,而不是替换整个表单,所以我使用了这个:
<span id="modal-response"></span>'
<?php
Pjax::widget([
'id' => 'modal-response', // response goes in this element
'enablePushState' => false,
'enableReplaceState' => false,
'formSelector' => '#options-form',// this form is submitted on change
'submitEvent' => 'change',
]);
?>
Run Code Online (Sandbox Code Playgroud)
我认为,只需将 div 写出pjax即可解决问题。只是一个猜测!
像这样,
<div id="formsection"></div>
<?php Pjax::begin(); ?>
<?php foreach ($tree as $id => $name): ?>
<?php echo Html::a(
$name,
['update', 'id'=>$id],
['data-pjax'=> '#formsection']) ?>
<?php endforeach ?>
<?php Pjax::end(); ?>
Run Code Online (Sandbox Code Playgroud)
另外,在控制器中,部分渲染视图。
return $this->renderPartial('update');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29008 次 |
| 最近记录: |