利用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("失败");
}
});
})
});
});
根据您提供的代码,有几个可能导致数据表格无法渲染数据的问题:
数据格式问题:在parseData函数中,您将返回的数据进行了处理和转换,确保返回的数据格式符合Layui表格的要求。根据您的代码,数据应该是符合要求的,但请确保datasplit[3]中的数据是一个有效的JSON字符串,并且能够成功解析。
错误处理:在您的success回调函数中,如果result不为null或undefined,您会将用户重定向到登录页并返回。这可能会导致您在渲染表格之前跳转到其他页面,因此无法渲染数据。请检查此部分逻辑是否符合您的预期需求。
数据接口问题:您在表格配置的url属性中指定了数据接口的URL,但在您的代码中,并没有在请求的data中传递任何参数。请确保您的数据接口能够正确处理和返回数据,并检查是否需要传递参数来获取特定的数据。
容器元素问题:请确保在HTML页面中存在一个具有id="mytable"的元素,以供Layui表格渲染数据时使用。
请逐一检查以上问题,并根据需要进行调整和修复。如果问题仍然存在,请提供更详细的错误信息或代码示例,以便更好地帮助您解决问题。
问题已解决,返回值必须得是Json格式,否则就会不执行parseData。
layui数据表格加载数据肯定没问题,一定是你的json格式错误或者与layui要求的格式不符,可以在线json格式化检查一下。
设置了parseData方法,但是没有执行。url访问固定数据的json文件就可以正常执行...url访问Handler/HandlerDataInfo.ashx,应该执行ProcessRequest方法,返回context.Response.Write(数据总数和data数据的json字符串);
您可以看一下我问题补充的代码部分。
@llkj: layui版本号是多少?
@0Behavior: 2.6.8
@0Behavior: 问题已解决,返回值必须得是Json格式,否则就会不执行parseData。