如何在ajax请求的数据表的“列”部分中使用变量

时间:2019-05-27 11:33:10

标签: javascript php jquery ajax laravel

我正在尝试为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 :(得分:0)

那是因为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 !
    });

});

考验但希望有效

相关问题