jQuery / Таблицы данных, сделайте запрос ajax при событии щелчка, все еще обрабатывая события DT

#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() обработчик, но затем получаю ошибки, из-за которых обучаемый не определен.

Я чувствую, что это должно быть так просто…