使用 pjax 重新加载 Yii2 数据表

Yii2 Datatable reload using pjax

我有这个问题。我正在使用 yii2。我正在使用 datatable 来显示我的内容。一切都很好。但是当我使用 Pjax 重新加载 table 时。一些 div 会丢失。这是屏幕截图:

这是在提交 pjax 之前。

提交后的这个。

有人知道如何在通过 pjax 重新加载时也重新加载 div 吗? 谢谢。

这是提交时我在 _form 中的代码:

$script = <<< JS

$('form#{$model->formName()}').on('beforeSubmit', function(e)
{
    var $form = $(this);
    $.post(
    $form.attr('action'),
    $form.serialize(),
    )
    .done(function(result){
       if (result == 1)
       {
        $($form).trigger('reset');
        $.pjax.reload({
            container: '#w0',
            timeout: false
        });
    } else {
        $('#message').html(result);
    }
}).fail(function()
{
    console.log('server error');
});
    return false;
});

JS;
$this->registerJs($script);

当您使用 Pjax 作为带有 DataTable 的搜索过滤器并重新加载 Pjax 时,将从主容器中删除 DataTable 插件的初始化。

你应该使用Pjax插件提供的Events,根据你现在的情况,你可以使用

pjax:complete : always fires after ajax, regardless of the result.

因此您可以绑定事件以重新加载容器上的 DataTable 脚本,如下所示。

$js=<<< JS
$(document).on('pjax:complete', function() {
    $('#myTable').DataTable();
});
JS;
$this->registerScript($js,\yii\web\View::POS_READY);

希望对您有所帮助。