最近在写程序时,页面使用DataTables出现这样错误消息如图:
当时觉得很奇怪,因为dataTables里设置的列值跟数据库查询语句的字段是一样长的,为什么还会报这样的错误?通过IE的调试工具后,发现是因为记录中有空值导致,数据库里查询出来的记录如下:
2011-05-18 18:31:13,750 org.apache.ibatis.logging.slf4j.Slf4jImpl:
<== Row: 1000100011, 10001fxsp_name_11, 73, null, 22.94, 1.8216482164821648
而通过Json传输到前台页面里获取的数据只有5个,如图:
dataTables.js里2603行源代码在:
/* Sanity check the length of the new array */
//modify by ruiming.lu
if ( aDataSupplied.length != oSettings.aoColumns.length &&
//if ( aDataSupplied.length > oSettings.aoColumns.length &&
oSettings.iDrawError != oSettings.iDraw )
{
_fnLog( oSettings, 0, "Added data (size "+aDataSupplied.length+") does not match known "+
"number of columns ("+oSettings.aoColumns.length+")" );
oSettings.iDrawError = oSettings.iDraw;
return -1;
}
有这样的语句判断,所以就抛出此错误。
所以在使用的过程中要注意空值的处理。