Я использую Web2py для разработки небольших приложений. Одно из моих приложений включает в себя таблицу, созданную с использованием dataTables. На столе есть кнопки, и у каждого есть выпадающий список с несколькими действиями, которые при нажатии обновляют статус таблицы.
Моя проблема в том, что на запрос GET требуется много времени, чтобы ответить, когда Нажатие кнопки занимает более 15-20 секунд, чтобы получить ответ, и, наконец, перезагрузить таблицу. введите описание изображения здесь
Я сделал это, используя JS и Ajax. Код для каждого элемента под кнопкой
<a id="Details_btn" class="dropdown-item" type="button" onclick="lead_statusupdate(this)" data-id="{{=lead.id}}" data-btn_status="Details Send" data-btn_user="{{=auth.user.id}}"><i class="fa fa-flag-checkered"> Details Send</i></a>
И эта кнопка вызывает Javascript в файле HTML Код для JS
<script type="text/javascript">
function lead_statusupdate(value) {
$("#myModal").modal("show");
var leadno = $(value).data('id');
var status = $(value).data('btn_status');
var updater = $(value).data('btn_user');
if (status !== "SMS Pending" && status !== "Mailer Pending"){
var remarks = prompt("Please remarks related to your update:", "Daily Update");
if (remarks == null || remarks == "") {
remarks = "No remarks entered";}
}
$.ajax({
type: "GET",
url: '/init/lead_entry/leadStatus_update',
data: { view_leadno: leadno,
view_status: status,
view_updater: updater,
view_remarks: remarks
}
});
$("#status_blck").load(" #status_blck > *");
}
</script>
Информация из представления передается в контроллер с помощью GET и AJAX
На стороне контроллера код
@auth.requires(auth.has_membership('Sales_Staff') or auth.has_membership('Admin'))
def leadStatus_update():
db.Lead_Status.insert( lead_id=request.vars.view_leadno,
lead_type='General Lead',
status=request.vars.view_status,
Updated_by=request.vars.view_updater,
Remarks=request.vars.view_remarks)
db(db.Fb_leads.id == request.vars.view_leadno).update(Final_Status=request.vars.view_status)
return response.json({'status':'success'})
Мне просто нужно отправить данные в контроллер, чтобы обновить данные по нажатию кнопки, можно использовать любой метод. Вышеупомянутый метод был доступен мне после поиска по поиску.
РЕДАКТИРОВАТЬ: изменил возврат из функции контроллера для возврата JSON и удалил commit () для каждого действия , Скорость немного улучшилась ... не большое изменение!