You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为DataTables填充复杂JSON数据并生成Href链接?

解决DataTables处理嵌套/数组型JSON并生成动态链接的问题

我来帮你搞定这两个问题!首先你的JSON数据结构有点特殊(json_list是对象而非数组),而且部分字段是数组形式,咱们一步步来调整:

第一步:修正数据源格式

DataTables默认期望接收数组类型的数据源,但你的json_list是键值对对象(键为125、133)。所以需要在dataSrc里把对象转换成数组:

ajax: {
    url:'/dashboard/ajaxgetrequests',
    dataSrc: function(response) {
        // 把对象转成数组,提取所有值
        return Object.values(response.json_list);
    }
}

第二步:动态生成链接(处理单个值/数组两种情况)

针对funding_project_name和relation_id可能是单个字符串或数组的情况,我们用columns.render函数来动态处理,判断字段类型后生成对应链接:

columns: [
    { data: 'firstname' },
    { 
        data: null, // 不用直接绑定字段,用render自定义处理
        render: function(data, type, row) {
            // 判断funding_project_name是数组还是单个值
            if (Array.isArray(row.funding_project_name)) {
                // 数组的话遍历生成多个链接,用逗号分隔
                return row.funding_project_name.map((name, index) => {
                    const relId = row.relation_id[index];
                    return `<a href="/${relId}">${name}</a>`;
                }).join(', ');
            } else {
                // 单个值直接生成链接
                return `<a href="/${row.relation_id}">${row.funding_project_name}</a>`;
            }
        }
    }
]

完整代码

把上面的部分整合起来,最终的DataTables初始化代码如下:

$(document).ready(function(){
    $('#empTable').DataTable({
        processing: true,
        serverSide: true,
        serverMethod: 'post',
        ajax: {
            url:'/dashboard/ajaxgetrequests',
            dataSrc: function(response) {
                return Object.values(response.json_list);
            }
        },
        columns: [
            { data: 'firstname' },
            { 
                data: null,
                render: function(data, type, row) {
                    if (Array.isArray(row.funding_project_name)) {
                        return row.funding_project_name.map((name, index) => {
                            const relId = row.relation_id[index];
                            return `<a href="/${relId}">${name}</a>`;
                        }).join(', ');
                    } else {
                        return `<a href="/${row.relation_id}">${row.funding_project_name}</a>`;
                    }
                }
            }
        ]
    });
});

关键说明

  • 对象转数组:用Object.values()把json_list里的所有值提取成数组,符合DataTables的数据源要求。
  • render函数:data: null表示不直接绑定字段,而是通过row参数获取当前行的所有数据,灵活处理单个值和数组的情况。
  • 数组遍历:用map()遍历数组,对应索引取出relation_id,生成对应的<a>标签,最后用join(', ')拼接成字符串显示。

内容的提问来源于stack exchange,提问作者anvd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:28:18