Cakephp: BootstrapTables JSON-данные не отображаются правильно без обновления - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть форма в модале, которая добавляет новые строки в BootstrapTable.Таблица перезагружается без обновления страницы, но данные отображаются неправильно:

enter image description here

Но после того, как я вручную обновлю страницу, данные отображаются правильно:

enter image description here

Это BootstrapTable:

<table class="table-striped" id="table" data-toggle="table"
                         data-search="true"
                         data-filter-control="true"
                         data-click-to-select="true"
                         data-escape="false"
                         >
                    <thead>
                        <tr>
                            <th data-field="name" data-filter-control="input" data-sortable="true" data-sorter="linksSorter" scope="col"><?= __('Title') ?></th>

                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($tasks as $task):
                            <tr>
                                 <td><?= $task->has('name') ? $this->Html->link($task->name, ['controller' => 'Tasks', 'action' => 'edit', $task->id], ['data-target' => '#exampleFormModal', 'data-toggle'=>'modal']) : '' ?></td>
                            </tr>

                        <?php endif;
                         endforeach; ?>
                    </tbody>
                </table>

Это код jquery для отправки формы:

$(function () {
    $("#DAbtn").click(function () { //Direct Assign button

        //e.preventDefault(); // avoid to execute the actual submit of the form.
        var input = $("<input>")
               .attr("type", "hidden")
               .attr("name", "btn").val("Direct Assign");
        $('#newTaskForm').append(input);
        var task = $("#newTaskForm").serialize();


        $.ajax({
            type: 'POST',
            url: '/app/tasks/createTask',
            datatype: 'json',
            data: task,
            success: function( data )
            {
                $('#table').bootstrapTable('load', data);
                $('.modal').modal('hide');
                $(".success").fadeIn(500).delay(2000).fadeOut(500);
                $("#newTaskForm")[0].reset();
                clearForm("newTaskForm");

            }
        });

        return false;

    });
});

А вот код контроллера (функция createTask):

public function createTask($userid = null, $projectid = null, $copiedtaskid = null)
    {
        $this->viewBuilder()->layout(false);
        $this->autoRender = false;
        $http = new Client();


        $task = $this->Tasks->newEntity();
        if ($this->request->is('ajax')) {  
             //....code to create the task......
        }
        $newTasks = $this->Tasks->find('all');
        return $this->response->withType("application/json")->withStringBody(json_encode($newTasks), ['status' => 200]);
}

Это console.log возвращаемого json:

enter image description here

...