Datatables加载JSON数据源时提示ticketid参数未知报错如何解决?
问题原因
这个报错的核心是Datatables在读取第0行第0列的数据时,无法从传入的数据源中找到ticketid对应的属性值,常见诱因有2种:
- 赋值给
data参数的dataArray没有被正确解析为JavaScript对象数组:比如从后端接口拿到的是字符串格式的JSON,没有执行JSON.parse()转换就直接传入,Datatables无法从字符串中读取属性。 dataArray结构层级不匹配:预期传入的是结构为[{ticketid:'xxx', ...}]的一维对象数组,但实际dataArray外层多套了一层数组,结构为[[{ticketid:'xxx', ...}]],导致Datatables遍历第一行时拿到的是内层数组而非对象,自然找不到对应的属性。
解决方案
- 先校验
dataArray的实际结构,在现有console.log(dataArray)的代码后新增一行调试代码:
console.log('类型:', typeof dataArray, '是否为数组:', Array.isArray(dataArray), '第一个元素:', dataArray[0])
- 如果打印的类型是
string,说明是JSON字符串未转换,在初始化Datatables前新增代码:
dataArray = JSON.parse(dataArray)
- 如果打印的第一个元素仍然是数组,说明多套了一层,修改Datatables的
data参数配置为:
data: dataArray[0],
- 若要避免偶发的字段缺失导致报错,可以给每一列配置默认空值,修改
columns配置如下:
columns: [ { data: 'ticketid', defaultContent: '' }, { data: 'siteName', defaultContent: '' }, { data: 'status', defaultContent: '' }, { data: 'issueType', defaultContent: '' } ]
内容的提问来源于stack exchange,提问作者Rehan Azher
相关产品推荐
相关产品推荐

