#javascript #jquery #ajax #datatables
Вопрос:
Я хочу отложить обычно тяжелый AJAX-запрос Datatables до тех пор, пока не будет нажата определенная часть навигации, сохраняя при этом обработчики событий, предлагаемые DataTables.
Вот мой код до сих пор:
$(document).ready(function() {
...
var traineesTable = $("#traineesTableId").DataTable({
pageLength: 12,
ordering: false,
searching: false,
processing: true,
serverSide: true,
lengthChange: false,
select: 'multi',
ajax: {
url: '',
dataType: "json",
type: "post",
data: function(d) {
var formdata = $("#traineesSearchFormId :input").serializeArray();
var data = {};
$(formdata).each(function(index, obj) {
data[obj.name] = obj.value;
});
d = $.extend(d, data);
return d;
}
},
...
});
// Navigation handler
$('a[data-target="#trainees"]').click(function () {
traineesTable.ajax.url = window.ajax_get_trainees_url;
traineesTable.ajax.reload();
});
$("#trainee-search-button").click(function(e) {
this.value = gettext("Please Wait");
this.disabled = true;
traineesTable.clear();
traineesTable.ajax.reload();
traineesTable.draw();
this.value = gettext("Search");
this.disabled = false;
});
// Additional DT functionality I want to keep
traineesTable.on('select', function (e, dt, type, indexes) {
if (type === 'row') {
var row = traineesTable[type](indexes).nodes().to$();
$("#trainees_ids").val($("#trainees_ids").val() row.children().first().html() ',');
row.find('.checkbox-box').addClass('checked');
}
});
});
Это вызывает проблемы в том, что DataTables ожидает действительный URL-адрес и выдает предупреждение, поскольку оно не определено.
Я попытался переместить создание обучаемого в click()
обработчик, но затем получаю ошибки, из-за которых обучаемый не определен.
Я чувствую, что это должно быть так просто…