У меня есть форма в модале, которая добавляет новые строки в BootstrapTable
.Таблица перезагружается без обновления страницы, но данные отображаются неправильно:
Но после того, как я вручную обновлю страницу, данные отображаются правильно:
Это 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: