Как заполнить данные из формата json в таблицу данных и сохранить свойства данных

Мне удалось получить данные в таблицу данных из формата json через ajax, но внезапно таблица данных потеряла некоторые свойства, которые позволяют ей выполнять поиск и разбивать на страницы. Но результаты можно просмотреть как массив через console.info, и все данные в результате поступают в длинную таблицу. Но в функции document.ready таблица до того, как я изменю элемент управления, выглядит хорошо со всеми функциями.

1- Я попытался заполнить его через js, объявив и включив свойства следующим образом:

 $('#assets').DataTable({
        paging: true,
        scrollX: true,
        lengthChange : true,
        searching: true,
        ordering: true
      });

и показано от 0 до 0 из 0 записей (отфильтровано из 1 записей)

2- Альтернативно

.done( function(data) {
    $('#example').dataTable( {
        "aaData": data,
        "columns": [
            { "data": "id" },
            { "data": "name" },
            { "data": "detail_alias" },
            { "data": "points" }
        ]
    })
})

Я пробовал разные методы из разных источников и красных ресурсов с данными, но не сработало. Я долго гуглил, но не получил ответа

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я использовал URL-адрес фиктивного онлайн-продукта для получения данных. Обновите свой код соответствующим образом.

Вам необходимо соответствующим образом настроить таблицу данных:

$(document).ready(function() {
        var table = $('#assets').DataTable({
         paging: true,
            scrollX: true,
            lengthChange: true,
            searching: true,
            ordering: true,
            columns: [
                { data: 'id' },
                { data: 'name' },
                { data: 'detail_alias' },
                { data: 'points' }
            ]
        });

Более того, если ваши данные возвращаются из серверного API в соответствии с форматом таблицы данных, смело удаляйте код форматирования:

   var formattedData = data.products.map(function(product) {
                    return {
                        id: product.id,
                        name: product.title,
                        detail_alias: product.title,
                        points: product.price
                    };
                });

Для получения дополнительной информации обратитесь к коду ниже:

<!DOCTYPE html>
<html>
<head>
    <meta charset = "UTF-8">
    <title>DataTable with JSON Data</title>
    <script src = "https://code.jquery.com/jquery-3.5.1.js"></script>
    <script type = "text/javascript" charset = "utf8" src = "https://cdn.datatables.net/1.10.24/js/jquery.dataTables.js"></script>
</head>
<body>
    <table id = "assets" class = "display">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Detail Alias</th>
                <th>Points</th>
            </tr>
        </thead>
        <tbody>
        </tbody>
    </table>

    <script>
    $(document).ready(function() {
        var table = $('#assets').DataTable({
         paging: true,
            scrollX: true,
            lengthChange: true,
            searching: true,
            ordering: true,
            columns: [
                { data: 'id' },
                { data: 'name' },
                { data: 'detail_alias' },
                { data: 'points' }
            ]
        });

        $.ajax({
            url: 'https://dummyjson.com/products',  // Replace with original url
            method: 'GET',
            dataType: 'json',
            success: function(data) {
                var formattedData = data.products.map(function(product) { // Not needed if data receive from backend is in format accordingly
                    return {
                        id: product.id,
                        name: product.title,
                        detail_alias: product.title,
                        points: product.price
                    };
                });
                table.clear();
                table.rows.add(formattedData);
                table.draw();
            },
            error: function(xhr, status, error) {
                console.error('AJAX Error:', {
                    status: status,
                    error: error,
                    responseText: xhr.responseText
                });
                alert('An error occurred while loading data. Please check the console for details.');
            }
        });
    });
    </script>
</body>
</html>

Я использовал часть вашего кода, кажется, он уже в пути, но теперь таблица заполнена исправленными 6 записями, но я не вижу их четко видимыми в таблице, похоже, мне нужно поместить каждый элемент в соответствующий столбец, чтобы показано, вот блок успеха @selaka-nanayakkara, пожалуйста, помогите решить его

Shyakalee 05.06.2024 19:54

если ответ хотя бы частично решает цель, я прошу вас отметить его как правильный ответ и проголосовать за любовь к сообществу. Тогда мы сможем сделать все остальное.. @Shyakalee

SELA 06.06.2024 05:45

Здравствуйте, сэр, мой запрос не решен, как показано, я все еще не разобрался, результаты хорошо отображаются в формате json через console.info, но невозможно визуально заполнить их в таблице, пожалуйста, помогите @Selaka Nanayakkara

Shyakalee 14.06.2024 16:50

Другие вопросы по теме