在添加到Datable之前更新Datatable响应

时间:2017-09-21 12:52:46

标签: jquery datatables

我正在使用服务器端渲染我的数据表现在我想改变我从json获得的数据。

这是我想做的事情

ajax:({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },

                type: "GET",
                url: '{{ url('admin/getLogData') }}'+goURI,

                "dataSrc": function(json) {

                    var return_data = new Array();
                    for(var i=0;i< json.data.length; i++){
                        //console.log(json[i].conversion_id);
                        //console.log(json.data[i].audit_type);
                        if(json.data['i'].audit_type=='text'){
                            var lnk='<a href={{ url('admin/text/view/') }}/'+ json.data[i].text_id + '>' + json.data[i].text_name +'</a>';
                        }
                        if(json.data['i'].audit_type=='msg'){
                            var lnk='<a href={{ url('admin/msg/view') }}/'+ json.data[i].msg_id + '>' + json.data[i].msg_company + '</a>';
                        }
                        if(json.data['i'].audit_type=='view'){
                            var lnk='<a href={{ url('admin/view/view') }}/'+ json.data[i].view_id + '>' + json.data[i].view_company + '</a>';
                        }

                        return_data.push({

                            'aID': json.data[i].audit_id,
                            'dTime': json.data[i].created_at,
                            'aType': json.data[i].audit_type,
                            'alink'  :  lnk,
                            'aUser'  : '<a href=mailto:'+ json.data[i].email +'>' + json.data[i].name + ' - ' + json.data[i].email + '</a>',
                            'aAct': '<a class=nyroModal href={{ url('admin/getAuditLog') }}/' + json.data[i].audit_id + '>view</a>',

                        })
                    }
                    return return_data;
                }

            })

如果您看到我想根据我从AJAX获得的响应更新lnk变量的值。但是我收到了未定义的audit_type错误。

任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

render功能允许您在显示之前操纵json。关键的是,full参数表示整行数据,因此您可以按索引访问所有元素。

"render": function ( data, type, full, meta ) {
    if(full[2]=='text'){
        return '<a href={{ url('admin/text/view') }}/'+ full[10] + '>' + full[11] + '</a>';
    }
    if(full[2]=='msg'){
        return '<a href={{ url('admin/msg/view/') }}/'+ full[8] + '>' + full[9] +'</a>';
    }
    if(full[2]=='view'){
        return '<a href={{ url('admin/view/view') }}/'+ full[6] + '>' + full[7] + '</a>';
    }
}