You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP开发中View类页面删除按钮无响应 无法删除数据库数据如何解决

问题原因排查
  • 核心问题:你的代码仅实现了编辑按钮的点击事件监听,完全没有为class为remove的删除按钮绑定任何点击触发逻辑,所以点击删除按钮没有任何动作,自然无法发起请求调用后端删除接口。
  • 其他潜在问题:如果你的CodeIgniter项目开启了CSRF防护,直接发起请求可能会被拦截导致删除失败;删除成功后没有同步移除页面对应的笔记行DOM,会出现数据库已经删除但页面还显示的问题。
修复代码

前端JS补充删除按钮监听逻辑

在你现有的<script>标签内补充以下代码:

// 静态渲染的列表用这个绑定
$('.remove').click(function(e){ 
    e.preventDefault();
    // 可选:增加二次确认避免误删
    if(!confirm('确定要删除这条笔记吗?')) return false;
    const deleteUrl = $(this).data('url');
    const $noteRow = $(this).closest('tr');
    // 发起AJAX请求调用删除接口
    $.get(deleteUrl, function(res){
        if(res == 1){
            // 删除成功,移除当前行
            $noteRow.remove();
            alert('笔记删除成功');
        }else{
            alert('笔记删除失败,请稍后重试');
        }
    });
});

如果你的笔记列表是动态渲染(比如新增笔记后无刷新追加到列表)的场景,需要使用事件委托绑定删除事件,替换上面的删除事件绑定代码为:

$(document).on('click', '.remove', function(e){
    e.preventDefault();
    // 内部逻辑和上面完全一致
    if(!confirm('确定要删除这条笔记吗?')) return false;
    const deleteUrl = $(this).data('url');
    const $noteRow = $(this).closest('tr');
    $.get(deleteUrl, function(res){
        if(res == 1){
            $noteRow.remove();
            alert('笔记删除成功');
        }else{
            alert('笔记删除失败,请稍后重试');
        }
    });
});

后端控制器可选优化(兼容返回状态判断)

现有控制器逻辑基本可用,可补充ID校验和返回值统一逻辑:

public function deletenote($id)
{
    // 增加ID合法性校验,避免异常
    if(empty($id) || !is_numeric($id)){
        echo 0;
        exit;
    }
    $c = $this->contacts_model->load($id, "refno");
    $deleteRes = $this->contacts_model->delete_note($id);
    echo $deleteRes ? 1 : 0;       
}
验证步骤
  1. 刷新页面后点击删除按钮,查看是否弹出确认提示
  2. 确认后查看对应笔记行是否从页面消失
  3. 检查数据库crm_contacts_notes表对应notes_id的数据是否已经删除

内容的提问来源于stack exchange,提问作者H2O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:15:03