Оба ответа выше используют ненужное количество запросов DOM.Попытайтесь изменить одно из этих решений, чтобы использовать ссылку в памяти на вашу таблицу, чтобы предотвратить чрезмерные запросы DOM.
Я предполагаю, что у вас есть хранилище таблицы, которую вы заполняете, используя такой оператор, как:
var myTableBody = $('#my-table-id tbody');
Переходя от этого, вы обязательно должны использовать цикл для просмотра массива результатов.Я бы сказал, что jQuery $ .each слишком многословен и в этом случае не нужен, поскольку возвращаемый объект должен быть чистым массивом JS.
success: function (result) {
result.forEach(function(resultRow){
var tableRow = `<tr>
<td>
${resultRow.id}
</td>
<td>
${resultRow.name}
</td>
<td>
${resultRow.product_name}
</td>
<td>
${resultRow.created_at}
</td>
</tr>`;
myTableBody
.append(tableRow);
});
}
Наиболее важная часть этого решения, по сравнению с остальнымиВо-вторых, отсутствие постоянных запросов DOM.Для результирующего набора из 100 элементов мое решение все еще только запрашивает DOM для элемента таблицы 1 раз.Другие решения запрашивают в DOM элемент таблицы для количества элементов в списке результатов.
По предложению Фила в комментариях я также добавляю реализацию карты.
success: function (result) {
let tableRows = result.map((resultRow) =>
`<tr>
<td>
${resultRow.id}
</td>
<td>
${resultRow.name}
</td>
<td>
${resultRow.product_name}
</td>
<td>
${resultRow.created_at}
</td>
</tr>`;
);
myTableBody.append(tableRows);
}