Вызов предыдущей страницы на стороне сервера не работает - PullRequest
0 голосов
/ 11 января 2020

Я настроил обработку данных на стороне сервера. На стороне сервера я использую python3 и mongodb.

Я думаю, что моя логика подкачки c хороша, как вы можете видеть из кода:

PYTHON:

@bp.route('/_ajax_products', methods=['GET', 'POST'])
@login_required
def ajax_products():
    num = int(request.args.get('page_num')) + 1
    total_items = product_db.count()
    items_to_show = 100
    result = {"draw": num, "recordsTotal": total_items, "recordsFiltered": total_items}

    list_prod = product_db.find().sort([("Code", 1)]).skip(items_to_show * (num - 1)).limit(items_to_show)

    final_list = []
    for i in list_prod: 
        # iteration on products and addition to the final list

    result['data'] = final_list
    return jsonify(result)

Инициализация данных :

$('#ProductsList').DataTable({
            "dom": 'Brlf<t><"clear">p',
            "pageLength": 100,
            select: true,
            "processing": true,
            "serverSide": true,
            "ajax": {
                url:"/_ajax_products",
                data: function ( d ) {
                    var datatable = $('#ProductsList').DataTable();
                    var currentPage = datatable.page.info().page;
                    d.page_num = currentPage;
                }
            },
            "columns":[...]
            ...
})

Данные хорошо загружаются в мои данные. Когда я вызываю следующую страницу, либо проблем нет.

Проблема появляется, когда я звоню на предыдущую страницу .

Отображение начинается на стр. 1 . когда я нажимаю, например, кнопку нумерации страниц 3 , я вижу в консоли:

"GET /_ajax_products?draw=3&

Но когда я пытаюсь go вернуться на страницу 1, параметр рисования переходит к 4:

"GET /_ajax_products?draw=4&

... и продолжает увеличиваться.

На стороне сервера хорошие данные найдены, но они не отображаются в таблице данных. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 27 января 2020

Я наконец нашел решение. Ошибка произошла из-за недопонимания того, что делает опция рисования.

Действительно, я думал, что значение draw соответствует отображаемой странице, а это не так.

Вот новая версия кода на случай, если он может кому-то помочь:

@bp.route('/_ajax_products', methods=['GET', 'POST'])
@login_required
def ajax_products():
    num = int(request.args.get('page_num')) + 1
    total_items = product_db.count()
    items_to_show = 100
    result = {"recordsTotal": total_items, "recordsFiltered": total_items}

    list_prod = product_db.find().sort([("Code", 1)]).skip(items_to_show * (num - 1)).limit(items_to_show)

    final_list = []
    for i in list_prod: 
        # iteration on products and addition to the final list

    result['data'] = final_list
    return jsonify(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...