Yii2 Обновление данных с использованием pjax - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть эта проблема.Я использую yii2.И я использую datatable для отображения моего контента.Все отлично.но когда я перезагружаю таблицу, используя Pjax.какой-то div будет отсутствовать.Вот скриншот:

enter image description here

это до отправки pjax.

enter image description here

этот после отправки.

кто-нибудь знает, как перезагружать также div при перезагрузке через pjax?спасибо.

Вот мой код в _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);

1 Ответ

0 голосов
/ 14 февраля 2019

Поскольку вы используете Pjax для поискового фильтра с DataTable и перезагрузите Pjax, удаляется инициализация плагина DataTable из основного контейнера.

Вы должны использовать События , предоставляемые плагином Pjax, и для вашей текущей ситуации вы можете использовать

pjax:complete: всегда срабатывает после ajax, независимо отрезультата.

Таким образом, вы можете связать событие, чтобы перезагрузить скрипт DataTable в контейнере, как показано ниже.

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

Надеюсь, это поможет.

...