Я боролся с этим уже несколько дней, и мне нужна помощь.
Я работаю с плагином 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>