Как передать данные на сервер с jQuery Datatables - PullRequest
0 голосов
/ 05 мая 2020

это должно быть тривиально, но я не могу полностью понять параметр «data» функции «ajax» jQueryDatatables. Документация описывает

function ajax( data, callback, settings )

, где «данные» - это «Данные для отправки на сервер». Отлично.

В этом минимальном примере

<form id="form" name="form">
    <input name="test" value="1" />
</form>

<button id="button">Search</button>

<table id="table">
    <thead>
        <tr>
            <th>Position</th>
            <th>Code</th>
            <th>Description</th>
            <th>Quantiy</th>
        </tr>
    </thead>
</table>

Я загружаю данные, только когда я нажимаю кнопку «Поиск». Моя цель - отправить всю сериализованную форму на сервер

var initialized = false;

$(document).ready(() => {

    $('#button').click(() => {
        $('#table').DataTable().ajax.reload();
    });

    $('#table').DataTable({
        ajax: (data, callback) => {

            // *** HERE I READ DATA TO BE SENT ***

            loadData($('#form').serialize()).then((dataReceived) => {
                callback(dataReceived);
            });
        },
        columns: [
            { data: 'position' },
            { data: 'code' },
            { data: 'description' },
            { data: 'qty' }
        ],
        initComplete: () => initialized = true 
    });
});

function loadData(searchData) {
    return new Promise((resolve) => {
        if (!initialized) {
            resolve({ data: {} });
        }
        else {
            $.ajax({
                url: 'http://127.0.0.1:5500/data.txt',
                method: "GET",
                dataType: 'json',
                data: searchData,
                success: json => resolve({ data: json.data })
            });
        }
    });
}

Это работает. Но я понял, что я не использую параметр "data" jQuery Datatables. Я предполагаю, как мне его использовать и как передать значение. Спасибо.

...