Datatables на стороне сервера JSON / Ajax - PullRequest
0 голосов
/ 11 июня 2019

Я боролся с этим уже несколько дней, и мне нужна помощь. Я работаю с плагином DataTables и пытаюсь загрузить данные, связанные с карьерой университета, из базы данных и заполнить таблицу через Ajax. Проблема в том, что я не очень разбираюсь в Ajax и JSON и получаю это сообщение об ошибке:

Предупреждение DataTables: table id = tableCareers - Неверный ответ JSON. Для получения дополнительной информации об этой ошибке, пожалуйста, см. http://datatables.net/tn/1

Я проверил JSON на онлайн-JID Validator, и результат был положительным, поэтому проблема может быть в Ajax-части.

Пока это мой код.

Модель

db.define_table('Degree',
                Field('description','string'),
                format = '%(description)s'
               )

db.define_table('Faculty',
                Field('description','string'),
                format = '%(description)s'
               )

db.define_table('Career',
                Field('name','string'),
                Field('duration (Years)', 'integer'),
                Field('faculty','reference Faculty', requires = IS_IN_DB(db,db.Faculty.id,'%(description)s'),
                Field('degree','reference Degree', requires = IS_IN_DB(db,db.Degree.id,'%(description)s')
                format= ' %(name)s '
               )

Контроллер (Tool / manageCareer.py)

   def manageCareer():
    import json
    rows = db((db.Career.faculty == db.Faculty.id)&(db.Career.degree == db.Degree.id)).select()
    return dict(results=XML(rows.as_json())) 

View

<script>
var table;
$(document).ready(function(){
   table=$('#tableCareers').DataTable( {
        'processing': true,
        'serverSide': true,
        'ajax':
         {
             type:'POST',
             url:"{{=URL('Tool', 'manageCareer')}}",
             data:{{=results}},
         },
        'columns': [
            { data: 'Career.name'},
            { data: 'Career.duration' },
            { data: 'Faculty.description' },
            { data: 'Degree.description' },
        ],
      });
      });
</script>

<table id="tableCareers" >
   <thead>
       <tr>
          <th>Name</th>
          <th>Duration (Years)</th>
          <th>Faculty</th>
          <th>Degree</th>
       </tr>
    </thead>
    <tbody></tbody>
</table>
...