Таблица начальной загрузки не распознает строки, созданные с использованием AJAX
Для справки: я работаю с Bootstrap-таблицей, используя Bootstrap v3.3.6. Я пытаюсь заполнить свою таблицу, используя AJAX и jQuery, но проблема в том, что при этом ни одно из расширений начальной загрузки, похоже, не работает с этими строками.
Я работаю над таблицей данных, используя следующие расширения:
`<table id="table" data-toggle="table" data-pagination="true" data-search="true" data-show-columns="true" data-show-pagination-switch="true" data-show-refresh="true" data-key-events="true" data-show-toggle="true" data-resizable="true" data-cookie="true" data-cookie-id-table="saveId" data-show-export="true" data-click-to-select="true" data-toolbar="#toolbar">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th>ID</th>
<th>ISBN</th>
<th>Description</th>
</tr>
</thead>
<tbody id="books-data">
<!-- table data rows to be inserted here -->
</tbody>
`
Если я заполняю таблицу с помощью PHP, кажется, что все работает нормально, под словом "все" я подразумеваю отображение данных, а также автоматически добавленные атрибуты к строкам таблицы, например добавление чекбокса в первую очередь. <td>
а также data-index
атрибут для каждого столбца в каждой строке.
Однако при заполнении таблицы с использованием AJAX таблица заполняется только данными, и нет взаимодействия между таблицей и ее строками, не добавляются атрибуты или флажки таблицы начальной загрузки, а также кажется, что с этими строками не работают расширения (например, экспорт, выбор строк...)
Для более подробной информации:
- При встраивании кода PHP в столбцы таблицы:
исходный код:
while ($row = mysqli_fetch_array($result)){ ?>
<tr>
<td></td>
<td><?php echo $row['id'] ?></td>
<td><?php echo $row['isbn']; ?></td>
<td><?php echo $row['description']; ?></td>
</tr>
<?php } ?>
Сгенерированный код по загрузочной таблице:
<tr data-index="0">
<td class="bs-checkbox ">
<input data-index="0" name="btSelectItem" type="checkbox">
</td>
<td style>
<!-- data -->
</td>
<td style> <!-- the same thing... --> </td>
</tr>
При динамическом создании строк с использованием AJAX:
<tr> <td></td> <td><!-- data --></td> <td><!-- data --></td> <td><!-- data --></td> </tr>
- Используемая функция jQuery:
$(function() { $.ajax({ url:"fetch_books.php", method:"POST", dataType:"json", success:function(data) { for(let count=0; count<data.length; count++) { let html_data = '<tr><td></td>'; html_data += '<td>'+data[count].id_livre+'</td>'; $('#books-data').append(html_data); } } }) });
Я хочу, чтобы результат был таким же, как когда я вставляю php в каждый столбец таблицы, я даже не знаю, почему у меня возникла эта проблема, мне нужна помощь.
1 ответ
Вы пытались использовать их метод для загрузки JSON вместо собственного JQuery?
От: https://bootstrap-table-docs3.wenzhixin.net.cn/getting-started/
Msgstr "Мы также можем использовать данные удалённого URL, установив url: 'data1.json'.
$('#table').bootstrapTable({
url: 'data1.json',
columns: [{
field: 'id',
title: 'Item ID'
}, {
field: 'name',
title: 'Item Name'
}, {
field: 'price',
title: 'Item Price'
}, ]
});
<table id="table"></table>
Если вы не хотите использовать предоставленный им метод, возможно, попробуйте добавить классы, индекс данных и т. Д., Которые вы видите в загрузочной таблице, в таблицу, которую вы генерируете...
let html_data = '<tr><td></td>';
=>
let html_data = '<tr data-index="0"><td class="bs-checkbox "><input data-index="0" name="btSelectItem" type="checkbox"></td>';
хотя я не думаю, что это заставит вас работать... это должно по крайней мере правильно оформить вещи. Вам нужно будет использовать способ, которым все правильно помещается в DOM. Я бы попробовал использовать метод Bootstrap-table для загрузки JSON, который они предоставили выше. Возможно, вам придется создать скрипт PHP, который принимает некоторые аргументы и возвращает правильно отформатированный JSON, чтобы их метод работал.