Я использую DataTables для отображения данных из MySQL. Это работало нормально, пока я не был вынужден использовать обработку на стороне сервера (100 тыс. Строк). Теперь, когда я загружаю таблицу в браузер, она работает нормально, пока я не использую некоторые функции DataTables (поиск, сортировка по столбцам ..). Когда я нажимаю, например, на Имя столбца, все, что я получил, это сообщение "Обрабатывается ...".
Я заметил, что при каждом щелчке по таблице ничья повышается на 1 в XMLHttpRequest, но моя «ничья» все еще имеет значение 1 в моем коде.
Мое определение ничьей, recordsTotal, recordsFiltered в коде python / flask (сокращено):
tick = table.query.all()
rowsCount = table1.query.count()
x = {'draw':1,'recordsTotal':rowsCount,'recordsFiltered':10}
y = dict(data=[i.serialize for i in tick])
z = y.copy()
z.update(x)
@app.route("/api/result")
def result_json():
return jsonify(z)
@app.route('/data')
def get_data():
return render_template('data.html')
Мой JSON:
{
"data": [
{
"first": "Anton",
"id": 1,
"last": "Spelec"
},
{
"first": "Rosamunde",
"id": 2,
"last": "Pilcher"
},
{
"first": "Vlasta",
"id": 3,
"last": "Burian"
},
{
"first": "Anton",
"id": 4,
"last": "Bernolak"
},
{
"first": "Willy",
"id": 5,
"last": "Wonka"
}
],
"draw": 1,
"recordsFiltered": 5,
"recordsTotal": 5
}
Моя HTML-страница с инициализацией DataTables:
<script>
$(document).ready(function() {
$('#table_id').DataTable( {
"processing": true,
"serverSide": true,
"paging": true,
"pageLength": 10,
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
"ajax": {
url: 'api/result',
},
columns: [
{ "data": "id" },
{ "data": "first" },
{ "data": "last" }
]
} );
} );
</script>
<table id="table_id">
<thead>
<tr>
<th>id</th>
<th>first</th>
<th>last</th>
</tr>
</thead>
</table>
XHR здесь:
Запросить URL:
http://10.10.10.12/api/result?draw=7&columns%5B0%5D%5Bdata%5D=id&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=first&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=last&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=asdf&search%5Bregex%5D=false&_=1536075500781
Документация по DataTables советует привести этот параметр к целому числу и отправить его обратно.
Я нашел похожий вопрос о параметре draw, и он предположил то же самое, но, к сожалению, я не могу заставить его работать. Преобразование параметра в целочисленное значение не будет проблемой, я думаю, но я заблудился в том, что делать с ним дальше или как передать параметр рендеринга в моем JSON.
Спасибо.