CodeIgniter CRUD(Datatables主题)删除按钮失效报错求助
这个报错Uncaught ReferenceError: success_message is not defined本质很明确——Datatables主题的AJAX删除操作成功后,要调用的success_message函数没有在页面中被定义,导致JS执行中断。你尝试定义$dialog_forms的思路方向是对的,但可能没覆盖到核心问题,我给你几个具体的解决步骤:
步骤1:手动补充
success_message函数定义
打开你的list_template.php,在页面底部的<script>标签里直接添加这个函数的自定义实现:<script type="text/javascript"> function success_message(message) { // 可以根据需求自定义提示方式,比如弹窗或页面内通知 alert('操作成功:' + message); // 别忘了刷新Datatables表格,让删除结果实时显示 $('#crudTable').DataTable().ajax.reload(); } </script>步骤2:确保
$dialog_forms变量正确传递与输出
如果你是通过控制器传递$dialog_forms到视图,要确保变量包含了CRUD默认的消息处理脚本。控制器里应该这样定义:$this->data['dialog_forms'] = $this->crud->get_dialog_forms();然后在
list_template.php的合适位置(比如JS区域之前)输出这个变量:<?php echo $dialog_forms; ?>这个变量本身就包含CRUD内置的消息处理函数,没正确输出的话就会导致函数缺失。
步骤3:排查JS冲突问题
你当前用的是jQuery 1.11.1,虽然稳定,但要检查页面中是否有其他JS文件覆盖或冲突了success_message函数。可以打开浏览器控制台,在Console栏输入success_message,如果返回undefined,就说明函数确实没被加载进来。步骤4:尝试更新CRUD库版本
要是上面的方法都没解决问题,可能是你使用的CodeIgniter CRUD版本存在Datatables主题的旧bug,尝试更新到最新版本,这类兼容性问题在新版本里大多已被修复。
内容的提问来源于stack exchange,提问作者Mira Kamali

