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

CodeIgniter 3批量删除订单功能失效求助:无报错但订单未删除

批量删除订单功能排查与修复

1. 修复复选框重复name属性问题

你的单行复选框代码重复定义了name属性,浏览器会忽略第一个name="checkbox-table",仅保留name="checkAll",导致JS选择器input[name='checkbox-table']无法选中任何复选框,最终order_ids为空数组,删除逻辑根本未执行。

原错误代码:

<th scope="row">
    <div class="form-check">
        <input class="form-check-input fs-15" name="checkbox-table" type="checkbox" name="checkAll" value="<?php echo $item->id; ?>">
    </div>
</th>

修复后代码:

<th scope="row">
    <div class="form-check">
        <input class="form-check-input fs-15" name="checkbox-table" type="checkbox" value="<?php echo $item->id; ?>">
    </div>
</th>

2. 补充全选复选框交互逻辑

你已添加全选复选框,但未实现全选/取消全选功能,需补充对应JS代码:

$('#checkAll').on('change', function() {
    $('input[name="checkbox-table"]').prop('checked', $(this).is(':checked'));
});

3. 增强AJAX请求的调试与容错

当前AJAX仅处理成功回调,无错误处理逻辑,无法排查请求是否失败。建议添加错误回调,并在成功回调中打印响应内容,确认后端是否接收参数:

$.ajax({
    type: "POST",
    url: base_url + "order_admin_controller/delete_selected_orders",
    data: data,
    success: function (response) {
        console.log('后端响应:', response); // 调试用,确认执行状态
        location.reload();
    },
    error: function(xhr, status, error) {
        console.error('请求错误:', status, error); // 排查请求失败原因
        swal('错误', '删除请求失败,请重试', 'error');
    }
});

4. 后端参数校验增强

在控制器中添加参数非空校验,避免空数组传入模型:

public function delete_selected_orders()
{
    $order_ids = $this->input->post('order_ids', true);
    // 校验参数有效性
    if (!empty($order_ids) && is_array($order_ids)) {
        $this->order_admin_model->delete_multi_orders($order_ids);
        reset_cache_data_on_change();
        echo json_encode(['status' => 'success']);
    } else {
        echo json_encode(['status' => 'error', 'msg' => '未选择任何订单']);
    }
}

5. 模型层批量删除优化(可选)

当前模型循环调用单个删除函数效率较低,可改为批量删除逻辑,减少数据库交互次数:

public function delete_multi_orders($order_ids)
{
    if (!empty($order_ids) && is_array($order_ids)) {
        // 批量删除订单商品
        $this->db->where_in('order_id', $order_ids)->delete('order_products');
        // 批量删除发票
        $this->db->where_in('order_id', $order_ids)->delete('invoices');
        // 批量删除订单
        return $this->db->where_in('id', $order_ids)->delete('orders');
    }
    return false;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:45:29