Как использовать переменную в разделе столбцов ajax-запроса для таблиц данных - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь добавить динамические значения для раздела столбца в запросе ajax, чтобы пользователи могли контролировать, какие поля находятся в таблицах данных.

Я пытался использовать значения по умолчанию, и это сработало, но когда я переключился на использование динамических значений из переменной, поле ajax выдает мне ошибки

это отлично работает;

$(function() {
            $('#myTable').DataTable({
                processing: true,
                serverSide: true,
                ajax: '{{ route('members.create') }}',
                columns: [
                    { data: 'name', name: 'name' },
                    { data: 'email', name: 'email' },
                    { data: 'address', name: 'address' },
                    { data: 'contact', name: 'contact' },
                    { data: 'nationality', name: 'nationality' },
                    { data: 'dob', name: 'dob' },
                    { data: 'hometown', name: 'hometown' },
                    { data: 'action', name: 'action', orderable: false, searchable: false }
                ]
            });
        });

вот в чем проблема;

$(function() {
            $('#myTable').DataTable({
                processing: true,
                serverSide: true,
                ajax: '{{ route('members.create') }}',
                columns: [
                    var memberFields = <?php echo json_encode($chosen_member_fields, JSON_UNESCAPED_UNICODE); ?>;
                    for(var i = 0; i < memberFields.length; i++){
                        { data: memberFields[i], name: memberFields[i] };
                    },
                    { data: 'action', name: 'action', orderable: false, searchable: false }
                ]
            });
        });

1 Ответ

0 голосов
/ 27 мая 2019

Это потому, что свойство column хочет array.И ваша структура для построения массива неверна.
Сделайте это:

$(function() {

    var memberFields = <?php echo json_encode($chosen_member_fields, JSON_UNESCAPED_UNICODE); ?>;
    var columnArray = [];//To save for value into an Array
    for(var i = 0; i < memberFields.length; i++){
        columnArray.push({ data: memberFields[i], name: memberFields[i] });//push valuse to array
    },
    columnArray.push({ data: 'action', name: 'action', orderable: false, searchable: false });//push last value

    $('#myTable').DataTable({
                processing: true,
                serverSide: true,
                ajax: '{{ route('members.create') }}',
                columns: columnArray ,  //just say Array name !
    });

});

Не проверял, но надежда работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...