Nev*_*ore 4 javascript ajax jquery datatables
我正在使用jQuery DataTables.在ajax请求之后,我调用the ajax.reload()方法来刷新我的dataTable但是我丢失了当前页面.它返回第一页.
这是我的DataTables init:
datatable_appointments = $('#datatable_appointments').DataTable({
"responsive" : true,
"processing" : true,
"serverSide": true,
"bSort" : false,
"ajax": function(data, callback, settings) {
// make a regular ajax request using data.start and data.length
$.get(URL_API + URL_APPOINTMENTS_STATE + '/', {
limit: data.length,
offset: data.start,
search: data.search.value
}, function(res) {
if (res.error) {
callback({
recordsTotal: 0,
recordsFiltered: 0,
data : ""
});
} else {
data_appointments = res.data;
// map your server's response to the DataTables format and pass it to
// DataTables' callback
callback({
recordsTotal: res.total_data,
recordsFiltered: res.total_data,
data: res.data
});
$("#datatable_appointments > tbody > tr > td").addClass("text-center");
$("#datatable_appointments > tbody > tr > td").css("vertical-align", "middle");
$("#datatable_appointments > thead > tr > th").addClass("text-center");
}
});
},
"columns" : [
{ "data": "service_name"},
{ "data": "doctor_info"},
{ "data": "patient_name", render: function (data, type, row, meta) {
return row.name + " " + row.surname;
}},
{ "data": "appointment_date", render: function (data, type, row, meta) {
var formattedDate = new Date(row.appointment_date);
var day = formattedDate.getDate();
var month = formattedDate.getMonth();
var hours = (formattedDate.getHours().toString().length == 1) ? '0' + formattedDate.getHours() : formattedDate.getHours();
hours += ':';
hours += (formattedDate.getMinutes().toString().length == 1) ? formattedDate.getMinutes() + '0' : formattedDate.getMinutes();
return day + ' ' + months[month] + ', ' + hours;
}},
{ "data": "state", render: function (data, type, row, meta) {
if (row.state == '0')
return '<i class="fa fa-circle font-red-mint"></i><br />?ptal';
else if (row.state == '1')
return '<i class="fa fa-circle font-green-jungle"></i><br />Onayl?';
else if (row.state == '2')
return '<i class="fa fa-circle font-grey-salsa"></i><br />Beklemede';
}},
{ "data": "actions", render: function (data, type, row, meta) {
if (row.state == '2')
return '<div class="btn-group btn-group-circle">' +
'<button type="button" onclick="setState(\''+row.id+'\', \'1\');" class="btn btn-outline green btn-sm">Onayla</button>' +
'<button type="button" onclick="setState(\''+row.id+'\', \'0\');" class="btn btn-outline red btn-sm">?ptal Et</button>' +
'</div>';
else
return '';
}}
],
"sPaginationType": "full_numbers",
"language": {
"emptyTable": "Kay?t bulunamad?.",
"sZeroRecords": "Bu kriterde sonuç bulunamad?.",
"search": "Bul",
"sProcessing" : "<img src='/assets/global/img/loading-spinner-blue.gif' />",
"sInfo": "Toplam <b>_TOTAL_</b> veri bulunmaktad?r.",
"sLengthMenu": "Gösterilen kay?t say?s? _MENU_",
"sInfoFiltered": "",
"sInfoEmpty":"",
"paginate": {
"sPrevious": "Önceki",
"sNext": "Sonraki",
"sFirst" : "?lk",
"sLast" : "Son"
}
}
});
Run Code Online (Sandbox Code Playgroud)
和我setState在同一个js文件中的方法:
function setState(id, state) {
$.ajax({
url : URL_API + URL_APPOINTMENTS_STATE + '/' + id,
type : 'put',
data : {'state' : state},
dataType : 'json',
success : function (response) {
if (response.error) {
} else {
datatable_appointments.ajax.reload();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
小智 19
您需要传递参数以保持当前页面:
datatable_appointments.ajax.reload( null, false )
Run Code Online (Sandbox Code Playgroud)
来源:https://datatables.net/reference/api/ajax.reload()
$(document).ready(function() {
$('#table_id').DataTable( {
stateSave: true
} );
});
Run Code Online (Sandbox Code Playgroud)
任何使用 jQuery DataTables 并想要执行任务(例如重新加载页面,或编辑、删除)的人都会面临丢失当前页面并导航到第一页的问题,此代码片段将帮助他保持在同一页面上,它避免了从当前页面返回到第一页。
| 归档时间: |
|
| 查看次数: |
10648 次 |
| 最近记录: |