0

现在,当我尝试获取数据并显示在使用服务器端的数据表上时,我遇到了一些错误。

按照下面的代码,我使用 ajax POST 方法获取了我的数据,因为我想发送一些需要在我的数据库中过滤的数据,这是我的代码。

Javascript

report_table = $('#report_table').DataTable({
            "scrollX": true,
            "serverSide":true,
            "deferRender": true,
            "ajax": {
                "url": "load_report_table",
                "type": "POST",
                "data":{
                    'region_id': function() { return $('#select_reg').val() },
                }
            },
});

Python

from datatables import ColumnDT, DataTables
from flask import request
@app.route('/load_report_table', methods=['POST', 'GET'])
def load_report_table(): 
    reg_id = request.form['region_id']
    columns = [
        ColumnDT(Battery_Log.time),
        ColumnDT(Battery.serial_number),
        ColumnDT(Battery_Log.usage),

    ]
    query = db.session.query().select_from(Battery, Battery_Log)\
            .filter(Battery.reg_id == reg_id, Battery_Log.battery_id == Battery.id)

    params = request.args.to_dict()
    rowTable = DataTables(params, query, columns)

    return rowTable.output_result()

但是当我打印rowTable.output_result()它时出现这样的错误。

{'draw': '1', 'recordsTotal': '14733', 'recordsFiltered': '14733', 'error': "int() argument must be a string, a bytes-like object or a number, not 'NoneType'"}

现在我猜测使用POST方法导致的错误,因为当我将代码更改为仅调用 url 而没有将任何数据发布到它正常工作的路由函数时,代码如下所示。

report_table = $('#report_table').DataTable({
            "scrollX": true,
            "serverSide":true,
            "deferRender": true,
            "ajax": "load_report_table"
});

那么无论如何要解决我可以将我的数据发布到我的路由函数并返回数据以显示在数据表上的问题。

4

0 回答 0