layui数据表格不显示数据!

在使用layui数据表格的时候,遇到了一个问题,后端传回的数据,在前端不显示。
刚开始的时候是一直报错:

layui table 返回的数据不符合规范,正确的成功状态码应为:"code": 0

经过一番搜查修改之后,是无数据
结果如下

img

然后又修改了一下成为下面这种了:

img

我的代码如下
html

    <div>
        <table id="usertable" lay-filter = "test"></table>
    </div>

js

layui.use('table', function(){
        var table = layui.table;
        table.render({
            elem: '#usertable'
            ,height: 312
            , url: '{% url "getsysuser0" %}' // 数据接口
            , page: true
            , cols: [[
                {field: 'user_id', title:'用户编号',width:120, sort:true, fixed:'left'}
                ,{field: 'account', title:'账号',width:100,sort:true}
                ,{field: 'password', title:'密码',width:100}
                ,{field: 'nickname', title:'昵称',width:120}
                ,{field: 'age', title:'年龄',width:80,sort:true}
                ,{field: 'gender', title:'性别',width:80}
                ,{field: 'phone', title:'电话',width:100}
                ,{field: 'email', title:'邮箱',width:100}
                ,{field: 'addtime', title:'添加时间',width:150}
            ]]
            , parseData:function(res){
                console.log(res)
                return {
                    "code": 0,
                    "msg":"",
                    "count":res.count,
                    "data":res.users
                }
            }
        });
    });

后端代码


@csrf_exempt
def getSysUser0(request):

    # 获取普通用户
    users = Sysusers.objects.filter(type__exact = 0)

    sysusers = serializers.serialize("json",users,ensure_ascii=False)
    sysusers = json.loads(sysusers)
    data = {
        "users":sysusers,
        "count":len(users)
    }
    
    return JsonResponse(data,safe=False,json_dumps_params={'ensure_ascii': False})

img


users应该是这样的结构

users: [{
    account: '',
    addtime: '',
    age: "",
    // 其余字段省略
}]

这个item是不是多余了?

img

  • 这篇博客也许可以解决你的问题👉 :layui table 返回的数据不符合规范,正确的成功状态码应为:"code": 0
  • 以下回答由chatgpt基于相关博客总结生成:

    解决方法:

    根据代码和参考资料,可以看到以下几种解决方法:

    1. 修改代码中的翻页函数,添加特定代码。

    在 table.js 中,修改 F.prototype.reload 函数,添加如下代码:i.config.where = {},并且在 e = e || {} 上面添加这一行代码。这个操作可以解决在翻页的时候数据无法被识别的问题。

    1. 在表格渲染时加入一个回调函数。

    在 table.render 中,增加一个 done 回调函数,用于处理表格数据。具体代码如下:

    table.render({
      elem: '#test',
      url: 'test',
      cols: [[
        // 填写表头参数
      ]],
      done: function(res, curr, count){
        this.where={};
      }
    });
    

    这个操作可以解决在渲染表格时无法显示从后台传回的数据的问题。

    1. 对于 layui table 的复选框,可以重载后进行回显。

    可以在 table.js 中的 F.prototype.renderData 函数中修改代码,添加以下内容:

    if (options.cacheCheck) {
      let cacheCheckData=table.cacheCheck[that.key]||{};
      return cacheCheckData[item1[options.checkKey]]?'checked':''
    }
    

    这个操作可以解决翻页后复选框数据无法显示的问题。

    1. 前台的 table 使用单选框时,可以使用 table 监听的方式,给数据的排序字段赋值,然后重载表格。

    例如:

    table.reload('tabelReload', {
      where: {
        'bdate': datebegin,
        'edate': dateend
      },
      page: {
        curr: 1 // 重新从第1页开始
      }
    });
    

    这个操作可以解决在前台使用单选框时表格顺序的问题。

    1. 自定义单元格编辑类型。

    由于官方 text 属性的支持范围有限,无法满足需求,可以通过自定义的方式实现单元格编辑,例如需要添加弹窗、下拉、时间选择器等内容。具体实现可以自行扩展。

    以上几种方法都可以解决在使用 layui table 时遇到的一些问题,具体根据问题选择相应的解决方案即可。