Отображение данных в таблице с помощью обработки на стороне сервера

#javascript #jquery #datatables #datatables-1.10

Вопрос:

Цель:
*Использовать Datatable в отношении обработки на стороне сервера. Если вы ИЗМЕНИТЕ сортировщик, номер страницы, примените функцию поиска и т. Д., на сервер будет отправлен запрос для получения 1000 строк (вместо 30 000 строк).
*Отображение данных в таблице.

Проблема:
Код не работает, и какая часть исходного кода мне не хватает для отображения содержимого данных?

Jsbin:
https://jsbin.com/gohuwenese/edit?html,js,вывод

Информация:
*Это простой пример.
*На самом деле общая строка составляет около 30 000 строк, и вы не можете отображать все данные одновременно.
Вы можете показать только номер страницы (каждый номер страницы содержит около 1000 строк).
*https://datatables.net/examples/server_side/simple.html

Спасибо!


 <!DOCTYPE html>
<html>
    <head>
        
        <!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<meta name="description" content="Search Button Handler">
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet" />
<link href="https://cdn.datatables.net/buttons/1.5.1/css/buttons.dataTables.min.css" rel="stylesheet" />

<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/buttons.html5.min.js"></script>
    </head>
    <body>

        <div class="container">
            <table id="example" class="display" width="100%">
                <thead>
                    <tr>
                        <th>Name</th>
                        <th>Position</th>
                        <th>Office</th>
                        <th>Age</th>
                        <th>Start date</th>
                        <th>Salary</th>
                    </tr>
                </thead>


            </table>
        </div>
    </body>
</html>
 

   $('#example').DataTable( {
    
        "processing": true, 
        "serverSide": true,
        "ajax":{
            url:"https://jsonplaceholder.typicode.com/comments",
            dataType:"json"
        },
        "columns": [
            { "data": "postId" },
            { "data": "id" },
            { "data": "name" },
            { "data": "email" },
            { "data": "body" }
        ]
    
});
 

Комментарии:

1. Вы проверили, почему вы получаете ошибку скрипта с помощью сетевых инструментов вашего браузера?

Ответ №1:

Ошибка типа Ошибка: Не удается прочитать свойство «длина» неопределенного обычно означает, что таблицы данных jQuery не могут найти данные в ответе на запрос Ajax.

Используйте формат по умолчанию или используйте опцию ajax.dataSrc, чтобы определить свойство данных, содержащее табличные данные в ответе Ajax (данные по умолчанию).

Удалите «json» из вашей dataSrc таблицы, и ваша таблица загрузит данные!

 var table = $('#example').DataTable( {
    
        "processing": true, 
        "serverSide": true,
        "ajax":{
            url:"https://jsonplaceholder.typicode.com/comments",
            dataSrc: ""
        },
        "columns": [
            { data: "postId" },
            { data: "id" },
            { data: "name" },
            { data: "email" },
            { data: "body" }
        ]
    
}); 
 <!DOCTYPE html>
<html>
    <head>
        
        <!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<meta name="description" content="Search Button Handler">
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet" />
<link href="https://cdn.datatables.net/buttons/1.5.1/css/buttons.dataTables.min.css" rel="stylesheet" />

<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/buttons.html5.min.js"></script>
    </head>
    <body>

        <div class="container">
            <table id="example" class="display" width="100%">
                <thead>
                    <tr>
                        <th>postId</th>
                        <th>id</th>
                        <th>Name</th>
                        <th>Email</th>
            <th>Body</th>
                    </tr>
                </thead>


            </table>
        </div>
    </body>
</html> 

Комментарии:

1. Если этот ответ поможет, пожалуйста, не забудьте проголосовать/принять 🙂