У меня проблема с поиском правильного решения для моего веб-интерфейса:
У меня есть таблица, созданная с помощью Datatables Framework. Внутренняя колба
По умолчанию таблица заполняется из БД Mysql с запросом SELECT * FROM test_table WHERE status != 'OK'
Но я хочу добавить флажок с именем Show all records
.
Установив этот флажок, бэкэнд должен использовать другой запрос для заполнения SELECT * FROM test_table
В основном, выберите все.
Javascript код:
$('#main_table').DataTable({
"processing": true,
"ajax": {
"url": "/index_get_data",
"dataType": "json",
"dataSrc": "data",
"contentType": "application/json"
},
"columns": [{
"data": "id"
}, {
"data": "version"
}
]
});
Питон во фляге
@app.route('/index')
@app.route('/')
def index():
return render_template('index.html')
@app.route('/index_get_data')
def main_info():
if query_all is not None:
sql_query = "SELECT * FROM test_table "
else:
sql_query = "SELECT * FROM test_table WHERE status != 'OK'"
conn = mysql.connect()
cursor = conn.cursor()
cursor.execute(sql_query)
conn.close()
row_headers = [x[0] for x in cursor.description]
rv = cursor.fetchall()
json_data = []
for result in rv:
json_data.append(dict(zip(row_headers, result)))
return_data = {'data': json_data}
return json.dumps(return_data, indent=4, sort_keys=True, default=str)
Функция Javascript, которая перехватывает событие проверки флажка
const checkbox = document.getElementById('chkBox')
checkbox.addEventListener('change', (event) => {
if (event.target.checked) {
$.post("/select_all", {
select_all: "True"
});
}
})
И вот, к сожалению, я застрял. Я не могу найти правильный способ перезагрузить страницу с запросом не по умолчанию.
...