表格加载数据为空显示ERROR如何处理?

提问 已结 16 294
大笨狗
悬赏:20飞吻
版本:layuiAdmin 浏览器:
各位大侠,小弟初学layui,遇到如下问题:
返回数据为:
{
"code": 0
,"msg": ""
,"count": "0"
,"data": []
}
表格加载渲染时显示Error如何解决。
回帖
  • CrazyYi
    2020-2-14
    @大笨狗
    另外,你自定义的js,建议你这么构造,比较合适。


    1、自定义JS
    layui.define(['table', 'form'], function (exports) {
    var $ = layui.$
    , table = layui.table
    , form = layui.form;
    const MOD_NAME = 'okr'

    /**
    * 内部实例,这里实现你任何想要实现的操作。
    * 但这些操作,不见得都可以对外展示
    */
    const classIns = function () {
    table.render({
    elem: '#LAY-user-back-role',
    url: "/workspace/test_e/test"
    ,
    cols: [[
    {type: 'checkbox', fixed: 'left'}
    , {field: 'id', width: 100, title: 'ID', sort: true}
    , {field: 'name', title: '姓名', minWidth: 100}
    , {field: 'sex', title: '性别'}
    ]],
    page: true,
    limit: 30,
    height: 'full-220',
    text: {none: '对不起,加载出现异常!'},

    done: function (res, curr, count) {
    console.log(res)
    },
    });
    };

    /**
    * 对外的执行类
    * @type {{render: render}}
    */
    const classOut = {
    render: function () {
    classIns();
    }
    };

    exports(MOD_NAME, classOut);
    });

    2、html中的调用
    <script>

    layui.config({
    base: '/public/plugin/layui/extra/okr/'
    }).extend({
    okr: 'okr', // 你需要哪些自定义js,就在这调用
    }).use(['okr'], function () {
    /**
    * 重点:在这里进行调用。也许你自定义的js中包含很多可以对外的方法。
    * 这样你操作起来就比较灵活。
    * 甚至,你还可以在自定义js中返回这个自定义的类的实例
    * 然后你就可以在任何你想要的地方在渲染table,而不是在加载js 就渲染。
    */
    layui.okr.render();
    });

    </script>
    这样灵活,而且看起来比较清晰直观。
    1 回复
  • 不会吧,看看控制台返回的到底是什么
    0 回复
  • 0 回复
  • CrazyYi
    2020-2-13
    应该 不会的
    0 回复
  • @CrazyYi 我把提供的案例json数据修改为{
    "code": 0
    ,"msg": ""
    ,"count": "0"
    ,"data": []
    }
    也是初现:Error错误。
    如下图:
    0 回复
  • CrazyYi
    2020-2-13
    @大笨狗 你这没代码,没法定位
    0 回复
  • module部分代码:
    //管理员管理
    table.render({
    elem: '#LAY-user-back-manage'
    , url: layui.setter.rootPath + "index.php?p=admin&c=system&a=userList"
    , cols: [[
    {type: 'checkbox', fixed: 'left'}
    , {field: 'user_id', width: 100, title: '用户ID'}
    , {field: 'user_name', title: '用户姓名', minWidth: 100}
    , {field: 'telphone', title: '手机'}
    , {field: 'email', width: 120, title: '邮箱'}
    , {field: 'sex', width: 80, align: 'center', title: '性别'}
    , {field: 'statue', title: '状态', templet: '#buttonTpl', align: 'center'}
    , {field: 'created_time', title: '创建时间', align: 'center'}
    , {title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
    ]]
    , page: true
    , text: '对不起,加载出现异常!'
    });
    Page页面部分代码:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>系统用户管理</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
    content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
    </head>
    <body>

    <div class="layui-fluid">
    <div class="layui-card">
    <div class="layui-form layui-card-header layuiadmin-card-header-auto">
    <div class="layui-form-item">
    <div class="layui-inline">
    <label class="layui-form-label">登录账号</label>
    <div class="layui-input-block">
    <input type="text" name="user_id" placeholder="请输入" autocomplete="off" class="layui-input">
    </div>
    </div>
    <div class="layui-inline">
    <label class="layui-form-label">手机</label>
    <div class="layui-input-block">
    <input type="text" name="telphone" placeholder="请输入" autocomplete="off" class="layui-input">
    </div>
    </div>
    <div class="layui-inline">
    <label class="layui-form-label">邮箱</label>
    <div class="layui-input-block">
    <input type="text" name="email" placeholder="请输入" autocomplete="off" class="layui-input">
    </div>
    </div>

    <div class="layui-inline">
    <button class="layui-btn layuiadmin-btn-admin" lay-submit lay-filter="LAY-user-back-search">
    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
    </button>
    </div>
    </div>
    </div>

    <div class="layui-card-body">
    <div style="padding-bottom: 10px;">
    <button class="layui-btn layuiadmin-btn-admin" data-type="batchdel">删除</button>
    <button class="layui-btn layuiadmin-btn-admin" data-type="add">添加</button>
    </div>

    <table id="LAY-user-back-manage" lay-filter="LAY-user-back-manage"></table>
    <script type="text/html" id="buttonTpl">
    {{# if(d.statue == true){ }}
    <button class="layui-btn layui-btn-xs">使用中</button>
    {{# } else { }}
    <button class="layui-btn layui-btn-primary layui-btn-xs">已锁定</button>
    {{# } }}
    </script>
    <script type="text/html" id="table-useradmin-admin">
    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i
    class="layui-icon layui-icon-edit"></i>编辑</a>
    {{# if(d.user_id == 'admin'){ }}
    <a class="layui-btn layui-btn-disabled layui-btn-xs"><i class="layui-icon layui-icon-delete"></i>删除</a>
    {{# } else { }}
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i
    class="layui-icon layui-icon-delete"></i>删除</a>
    {{# } }}
    </script>
    </div>
    </div>
    </div>

    <script src="../../layuiadmin/layui/layui.js"></script>
    <script>
    layui.config({
    base: '../../layuiadmin/' //静态资源所在路径
    }).extend({
    index: 'lib/index' //主入口模块
    }).use(['index', 'sys', 'table'], function () {
    var $ = layui.$
    , form = layui.form
    , table = layui.table;

    //监听搜索
    form.on('submit(LAY-user-back-search)', function (data) {
    var field = data.field;

    //执行重载
    table.reload('LAY-user-back-manage', {
    where: field
    });
    });

    //事件
    var active = {
    batchdel: function () {
    var checkStatus = table.checkStatus('LAY-user-back-manage')
    , checkData = checkStatus.data; //得到选中的数据

    if (checkData.length === 0) {
    return layer.msg('请选择数据');
    }

    layer.confirm('确定删除吗?', function (index) {

    //执行 Ajax 后重载
    for (var i = 0; i < checkData.length; i++) {
    $.ajax({
    type: "GET"
    , dataType: "json"//预期服务器返回的数据类型
    , url: layui.setter.rootPath + "index.php?p=admin&c=system&a=deleteUser"//url
    , data: checkData[i]
    , success: function (data) {
    if (data.result = true) {
    table.reload('LAY-user-back-manage');
    layer.msg(data.message);
    } else {
    layer.msg(data.message);
    }
    }
    });
    }
    });



    }
    , add: function () {
    layer.open({
    type: 2
    , title: '添加新用户'
    , content: 'user_form.html'
    , area: ['650px', '500px']
    , btn: ['确定', '取消']
    , yes: function (index, layero) {
    var iframeWindow = window['layui-layer-iframe' + index]
    , submitID = 'LAY-user-back-submit'
    , submit = layero.find('iframe').contents().find('#' + submitID);

    //监听提交
    iframeWindow.layui.form.on('submit(LAY-user-front-submit)', function (data) {
    var field = data.field; //获取提交的字段

    //提交 Ajax 成功后,静态更新表格中的数据
    $.ajax({
    type: "POST",//方法类型
    dataType: "json",//预期服务器返回的数据类型
    url: layui.setter.rootPath + "index.php?p=admin&c=system&a=insertUser",//url
    data: data.field,
    success: function (data) {
    if (data.result) {
    layer.alert(data.message);
    table.reload('LAY-user-back-manage'); //数据刷新
    layer.close(index); //关闭弹层
    } else {
    layer.alert(data.message);
    }
    },
    error: function (xhr, status, err) {
    alert("发生未知错误,请联系管理员!" + xhr + "==" + status + "---" + err);
    }
    });

    });

    submit.trigger('click');
    }
    });
    }
    }
    $('.layui-btn.layuiadmin-btn-admin').on('click', function () {
    var type = $(this).data('type');
    active[type] ? active[type].call(this) : '';
    });
    });
    </script>
    </body>
    </html>



    0 回复
  • @CrazyYi
    module部分代码:
    //管理员管理
    table.render({
    elem: '#LAY-user-back-manage'
    , url: layui.setter.rootPath + "index.php?p=admin&c=system&a=userList"
    , cols: [[
    {type: 'checkbox', fixed: 'left'}
    , {field: 'user_id', width: 100, title: '用户ID'}
    , {field: 'user_name', title: '用户姓名', minWidth: 100}
    , {field: 'telphone', title: '手机'}
    , {field: 'email', width: 120, title: '邮箱'}
    , {field: 'sex', width: 80, align: 'center', title: '性别'}
    , {field: 'statue', title: '状态', templet: '#buttonTpl', align: 'center'}
    , {field: 'created_time', title: '创建时间', align: 'center'}
    , {title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
    ]]
    , page: true
    , text: '对不起,加载出现异常!'
    });
    Page页面部分代码:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>系统用户管理</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
    content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
    </head>
    <body>

    <div class="layui-fluid">
    <div class="layui-card">
    <div class="layui-form layui-card-header layuiadmin-card-header-auto">
    <div class="layui-form-item">
    <div class="layui-inline">
    <label class="layui-form-label">登录账号</label>
    <div class="layui-input-block">
    <input type="text" name="user_id" placeholder="请输入" autocomplete="off" class="layui-input">
    </div>
    </div>
    <div class="layui-inline">
    <label class="layui-form-label">手机</label>
    <div class="layui-input-block">
    <input type="text" name="telphone" placeholder="请输入" autocomplete="off" class="layui-input">
    </div>
    </div>
    <div class="layui-inline">
    <label class="layui-form-label">邮箱</label>
    <div class="layui-input-block">
    <input type="text" name="email" placeholder="请输入" autocomplete="off" class="layui-input">
    </div>
    </div>

    <div class="layui-inline">
    <button class="layui-btn layuiadmin-btn-admin" lay-submit lay-filter="LAY-user-back-search">
    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
    </button>
    </div>
    </div>
    </div>

    <div class="layui-card-body">
    <div style="padding-bottom: 10px;">
    <button class="layui-btn layuiadmin-btn-admin" data-type="batchdel">删除</button>
    <button class="layui-btn layuiadmin-btn-admin" data-type="add">添加</button>
    </div>

    <table id="LAY-user-back-manage" lay-filter="LAY-user-back-manage"></table>
    <script type="text/html" id="buttonTpl">
    {{# if(d.statue == true){ }}
    <button class="layui-btn layui-btn-xs">使用中</button>
    {{# } else { }}
    <button class="layui-btn layui-btn-primary layui-btn-xs">已锁定</button>
    {{# } }}
    </script>
    <script type="text/html" id="table-useradmin-admin">
    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i
    class="layui-icon layui-icon-edit"></i>编辑</a>
    {{# if(d.user_id == 'admin'){ }}
    <a class="layui-btn layui-btn-disabled layui-btn-xs"><i class="layui-icon layui-icon-delete"></i>删除</a>
    {{# } else { }}
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i
    class="layui-icon layui-icon-delete"></i>删除</a>
    {{# } }}
    </script>
    </div>
    </div>
    </div>

    <script src="../../layuiadmin/layui/layui.js"></script>
    <script>
    layui.config({
    base: '../../layuiadmin/' //静态资源所在路径
    }).extend({
    index: 'lib/index' //主入口模块
    }).use(['index', 'sys', 'table'], function () {
    var $ = layui.$
    , form = layui.form
    , table = layui.table;

    //监听搜索
    form.on('submit(LAY-user-back-search)', function (data) {
    var field = data.field;

    //执行重载
    table.reload('LAY-user-back-manage', {
    where: field
    });
    });

    //事件
    var active = {
    batchdel: function () {
    var checkStatus = table.checkStatus('LAY-user-back-manage')
    , checkData = checkStatus.data; //得到选中的数据

    if (checkData.length === 0) {
    return layer.msg('请选择数据');
    }

    layer.confirm('确定删除吗?', function (index) {

    //执行 Ajax 后重载
    for (var i = 0; i < checkData.length; i++) {
    $.ajax({
    type: "GET"
    , dataType: "json"//预期服务器返回的数据类型
    , url: layui.setter.rootPath + "index.php?p=admin&c=system&a=deleteUser"//url
    , data: checkData[i]
    , success: function (data) {
    if (data.result = true) {
    table.reload('LAY-user-back-manage');
    layer.msg(data.message);
    } else {
    layer.msg(data.message);
    }
    }
    });
    }
    });



    }
    , add: function () {
    layer.open({
    type: 2
    , title: '添加新用户'
    , content: 'user_form.html'
    , area: ['650px', '500px']
    , btn: ['确定', '取消']
    , yes: function (index, layero) {
    var iframeWindow = window['layui-layer-iframe' + index]
    , submitID = 'LAY-user-back-submit'
    , submit = layero.find('iframe').contents().find('#' + submitID);

    //监听提交
    iframeWindow.layui.form.on('submit(LAY-user-front-submit)', function (data) {
    var field = data.field; //获取提交的字段

    //提交 Ajax 成功后,静态更新表格中的数据
    $.ajax({
    type: "POST",//方法类型
    dataType: "json",//预期服务器返回的数据类型
    url: layui.setter.rootPath + "index.php?p=admin&c=system&a=insertUser",//url
    data: data.field,
    success: function (data) {
    if (data.result) {
    layer.alert(data.message);
    table.reload('LAY-user-back-manage'); //数据刷新
    layer.close(index); //关闭弹层
    } else {
    layer.alert(data.message);
    }
    },
    error: function (xhr, status, err) {
    alert("发生未知错误,请联系管理员!" + xhr + "==" + status + "---" + err);
    }
    });

    });

    submit.trigger('click');
    }
    });
    }
    }
    $('.layui-btn.layuiadmin-btn-admin').on('click', function () {
    var type = $(this).data('type');
    active[type] ? active[type].call(this) : '';
    });
    });
    </script>
    </body>
    </html>
    0 回复
  • @CrazyYi 请大拿尽快给回复下。
    0 回复
  • CrazyYi
    2020-2-14
    @大笨狗 [生病] 你这个代码的排版。下次你贴代码,是不是可以使用 </> 按钮中输入代码?另外,那些不需要的代码,可以去掉。

    我拷贝你的代码到html 里面看了,看不出来。你能否把
    “url: layui.setter.rootPath + "index.php?p=admin&c=system&a=userList"” 这个链接请求的结果打印出来。
    就是在 parseData: function(res){console.log(res)},我看看你请求的结果res 是什么
    0 回复