如何解决jQuery DataTables出现的未知alert弹窗报错问题
问题原因
这个alert是jQuery DataTables内置的错误提示机制,当出现配置冲突、返回数据格式不符合要求、渲染出错等问题时就会自动触发,无需开发者手动编写alert代码。
解决方案
- 修复重复配置冲突
你的代码中重复定义了buttons参数,先写了buttons: ['pageLength']后面又定义了完整的带导出功能的buttons数组,会导致配置解析出错,直接删除前面多余的buttons: ['pageLength']配置即可。同时删除废弃的旧版本排序参数"aaSorting":[],该参数已被order配置替代,同时使用会触发兼容错误。 - 修复渲染逻辑的HTML结构问题
你把JSON序列化后的数据直接拼接到input的value属性中,如果数据中包含双引号会直接打断HTML结构,触发解析错误,修改序列化后的转义逻辑:var $table_fulldata=JSON.stringify(data).replace(/'/g,"_").replace(/"/g, '"'); - 优化PHP接口返回逻辑
接口返回JSON时如果存在多余的输出(比如PHP报错信息、空格、换行等)会导致DataTables解析失败,修改PHP代码清空多余输出:$get_result_data=array(); if ($this->security->xss_clean($_POST) === FALSE) { $get_result_data=array(); }else{ $sql="CALL SP(?,?,?)"; $resultData=$this->db->query($sql,array("","C","30"))->result(); $get_result_data = $resultData ?? []; } $send_data['data']= $get_result_data; ob_clean(); // 清空之前所有输出 echo json_encode($send_data); exit; // 终止后续输出 - 方便后续排查可以关闭默认alert提示
在初始化DataTables之前添加全局配置,让错误直接输出到控制台,避免影响用户使用:$.fn.dataTable.ext.errMode = 'throw';
内容的提问来源于stack exchange,提问作者Balamurugan M
相关产品推荐
相关产品推荐

