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

CodeIgniter中Ajax确认删除点击确定无响应如何修复

CodeIgniter 删除功能点击确认无响应问题排查修复

核心故障原因

一共4个直接导致功能失效的问题:

  • 引入的jQuery是slim精简版本,该版本移除了$.ajax等Ajax相关方法,点击确认后JS直接报错,请求根本发不出去
  • 删除按钮的value属性末尾多了冗余空格,拼接出的请求URL带多余空白字符,容易触发路由匹配失败
  • 控制器删除方法针对Ajax请求使用了redirect()重定向,不符合Ajax接口的响应逻辑
  • Ajax请求未配置错误回调,出错时无任何提示,难以定位问题

逐部分修正方案

1. 替换jQuery版本(最核心修复)

把footer里的slim版jQuery换成完整版,slim版不支持Ajax、动画等常用方法:

<!-- 删除原有jquery-3.5.1.slim.min.js引用,替换为完整版 -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>

2. 修正前端交互脚本

去除id前后的空白字符,补全错误回调,请求成功后手动触发页面更新:

<script>
$(document).ready(function () {
    $('.confirm-delete').click(function (e) {
        e.preventDefault();
        if(confirm("确定要删除这条数据吗?"))
        {
            // 用trim清除id前后可能存在的冗余空格
            var id = $(this).val().trim();
            $.ajax({
                type: "DELETE",
                url: "/employee/confirmdelete/"+id,
                success: function (response) {
                    alert("数据删除成功");
                    // 删除成功后刷新列表,也可写逻辑直接移除当前行DOM实现无刷新更新
                    window.location.reload();
                },
                error: function(xhr) {
                    alert("删除失败,错误码:" + xhr.status);
                }
            });
        }
    });
});
</script>

3. 修正删除按钮的value冗余空格

删除按钮value属性末尾的多余空格,避免URL拼接错误:

<button type="button" class="btn btn-danger confirm-delete" value="<?= $row->id; ?>">确认删除</button>

4. 修正控制器删除方法的响应逻辑

Ajax请求不要使用服务端重定向,直接返回JSON格式的操作状态即可:

public function delete($id)
{
    $this->load->model('EmployeeModel');
    $result = $this->EmployeeModel->deleteEmployee($id);  
    // 返回JSON响应,不做服务端跳转
    return $this->output
        ->set_content_type('application/json')
        ->set_output(json_encode([
            'code' => $result ? 200 : 500,
            'msg' => $result ? '删除成功' : '删除失败'
        ]));
}

5. 模型层与路由说明

原有路由配置、模型层删除逻辑无语法问题,不需要修改:

// 路由配置正常,可正确匹配DELETE请求
$route['employee/confirmdelete/(:any)']['DELETE'] = 'Frontend/EmployeeController/delete/$1';
// 模型删除逻辑正常
public function deleteEmployee($id)
{
    return $this->db->delete('employee', ['id' => $id]);
}

验证方法:修改完成后打开浏览器开发者工具的Console面板,确认没有$.ajax is not defined类报错,再点击删除按钮查看Network面板中DELETE请求是否正常发送、返回200状态码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:27:27