easyui加载数据出错Cannot read property 'length' of undef

心不动则不痛 提交于 2019-12-06 21:21:50

Uncaught TypeError: Cannot read property 'length' of undefined:

例如:在treegrid的行编辑中,在执行了onAfterEdit()方法之后,会自动执行onLoadSuccess()方法,从服务器重新加载数据,如果服务器返回的数据为null,那么就会抛出这样一个错误,

源码为:

var isArray = $.array.likeArray(data) && !$.util.isString(data), rows = isArray ? data : data.rows; 
f (!rows.length) { return data; }//这句话抛出错误,此错误会导致不会执行onLoadSuccess()方法,即页面的原有的数据不会发生改变


Uncaught TypeError: Cannot read property 'id' of undefined"

错误2:

这个错误很可能的原因是:

    --例如treegrid,异步加载树

    代码:

$("#xmzj").treegrid("expand", id);//展开该节点
$("#xmzj").treegrid("scrollTo",index);//滚动到行标为index的记录
$("#xmzj").treegrid("select", id);//选择记录
//id节点在treegrid中本身是存在的,但是在当前树中由于是异步加载,可能并没有加载出来,那么在expand的时候并不会主动发送url请求,expand展开的原理是展开已经有的树节点,主动发送请求加载该节点下的子节点;如果该节点并没有实际存在,那么不会展开,scrollTo是滚动到索引为index的记录,如果该树实际已经存在该索引,那么则滚动到,如果不存在,也不会报错;但是第三句select,会根据id去该树几点寻找已经存在的id值的记录,如果存在,则选择;不存在,会报错,说id is undefined.所以说报id为定义的错误,肯定是某个地方用到这个id,但是根据这个id来操作的时候,发生了错误.

还有中可能:比如加载treegrid的数据的时候,返回过来的row中没有id属性,而treegrid中以idField:'id',即该treegrid以id来作为唯一标识,那么如果row中如果没有id属性存在,那么肯定会报Uncaught TypeError: Cannot read property 'id' of undefined" 错误,因为row中其他属性都可以没有,但是id属性必须存在.


Uncaught TypeError: Cannot read property 'nodeName' of undefined:

该错误很可能是利用利用jquery获取到某些元素之后,然后操作该元素的一些属性引起的,因为这些属性没有定义

例如:

/*在销毁编辑框的时候,第一个参数表示该treegrid控件,第二个表示一个object对象,如果该控件写错了,
比如应该要写成$("#xmzj")[0],但是写成了一个$("xmzj")[0],因为后面写错的得到了一个null的元素,那么进入_destroyCellEditor()函数在其中操作空元素来操作一些属性的时候就会报这个错误*/
_destroyCellEditor($(name)[0],{index:rowIndex,field:field});


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!