首页 新闻 会员 周边 捐助

layui table利用ajax获取数据,不能正常加载数据

0
悬赏园豆:30 [已解决问题] 解决于 2023-07-07 13:56

利用ajax正常返回数据以后,返回的data数据也有,也转换成了json,通过给layui.render 中给data属性赋值实现渲染数据,但就是不知道为什么layui数据表格中就是不渲染数据。

问题补充:

layui.use(['form', 'jquery', 'layer', 'table'], function () {
var form = layui.form;
var $ = layui.$;
var layer = layui.layer;
var table = layui.table;

$(function () {
    $("#querybtn").click(function () {
        $.ajax({
            url: "Handler/HandlerDataInfo.ashx",
            async: true,
            data: arg,
            timeout: 120000,
            type: "post",
            beforeSend: function () {
                // 请求之前的方法
            },
            success: function (result) {
                if (result != null && result != undefined) {
                    window.parent.location = curWwwPath.substring(0, pos) + "/Login.aspx";
                    return;
                }

                let data = result;
                console.log(result);
                console.log(data);
                datasplit = data.split('#');
                data = JSON.parse("{\"code\":0,\"msg\":\"\",\"count\": " + parseInt(datasplit[0]) + ",\"data\": " + datasplit[3] + "}");
                console.log(data);
                console.log(typeof (data.data[0].stationname));
                console.log(typeof (data.code));
                console.log(typeof (data.count));

                table.render({
                    elem: '#mytable',
                    height: 312,
                    url: "Handler/HandlerDataInfo.ashx", //数据接口
                    page: true, //开启分页
                    cols: [
                        [ //表头
                            { type: 'checkbox', width: 55 },
                            { field: 'id', title: '编号', width: 180 },
                            { field: 'name', title: '名称', width: 200 },
                            { field: 'position', title: '位置', width: 180 },
                            { field: 'type', title: '类型', width: 130 },
                            { field: 'status', title: '状态', width: 120 },
                            { field: 'operate', title: '操作', width: 520 }
                        ]
                    ],
                    parseData: function (res) {
                        datasplit = res.split('#');
                        return {
                            "code": 0,
                            "msg": "",
                            "count": parseInt(datasplit[0]),
                            "data": JSON.parse(datasplit[3])
                        };
                    }
                });
            },
            error: function () {
                console.log("失败");
            }
        });
    })
});

});

llkj的主页 llkj | 初学一级 | 园豆:179
提问于:2023-07-05 15:25
< >
分享
最佳答案
0

根据您提供的代码,有几个可能导致数据表格无法渲染数据的问题:

数据格式问题:在parseData函数中,您将返回的数据进行了处理和转换,确保返回的数据格式符合Layui表格的要求。根据您的代码,数据应该是符合要求的,但请确保datasplit[3]中的数据是一个有效的JSON字符串,并且能够成功解析。

错误处理:在您的success回调函数中,如果result不为null或undefined,您会将用户重定向到登录页并返回。这可能会导致您在渲染表格之前跳转到其他页面,因此无法渲染数据。请检查此部分逻辑是否符合您的预期需求。

数据接口问题:您在表格配置的url属性中指定了数据接口的URL,但在您的代码中,并没有在请求的data中传递任何参数。请确保您的数据接口能够正确处理和返回数据,并检查是否需要传递参数来获取特定的数据。

容器元素问题:请确保在HTML页面中存在一个具有id="mytable"的元素,以供Layui表格渲染数据时使用。

请逐一检查以上问题,并根据需要进行调整和修复。如果问题仍然存在,请提供更详细的错误信息或代码示例,以便更好地帮助您解决问题。

收获园豆:15
Technologyforgood | 大侠五级 |园豆:7535 | 2023-07-06 22:33

问题已解决,返回值必须得是Json格式,否则就会不执行parseData。

llkj | 园豆:179 (初学一级) | 2023-07-07 13:55
其他回答(1)
0

layui数据表格加载数据肯定没问题,一定是你的json格式错误或者与layui要求的格式不符,可以在线json格式化检查一下。

收获园豆:15
0Behavior | 园豆:25 (初学一级) | 2023-07-05 16:14

设置了parseData方法,但是没有执行。url访问固定数据的json文件就可以正常执行...url访问Handler/HandlerDataInfo.ashx,应该执行ProcessRequest方法,返回context.Response.Write(数据总数和data数据的json字符串);

支持(0) 反对(0) llkj | 园豆:179 (初学一级) | 2023-07-05 18:05

您可以看一下我问题补充的代码部分。

支持(0) 反对(0) llkj | 园豆:179 (初学一级) | 2023-07-05 18:07

@llkj: layui版本号是多少?

支持(0) 反对(0) 0Behavior | 园豆:25 (初学一级) | 2023-07-06 08:25

@0Behavior: 2.6.8

支持(0) 反对(0) llkj | 园豆:179 (初学一级) | 2023-07-07 13:54

@0Behavior: 问题已解决,返回值必须得是Json格式,否则就会不执行parseData。

支持(0) 反对(0) llkj | 园豆:179 (初学一级) | 2023-07-07 13:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册