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

如何在PHP环境下使用jqGrid删除数据行?

在PHP环境下用jqGrid实现数据行删除操作

一、前端配置调整

你现有的jqGrid初始化代码已经通过navGrid开启了删除按钮,但需要补充删除请求的后端处理地址及相关配置,确保删除操作能和PHP后端交互:

修改navGrid配置

$("#list2").jqGrid({
    url:'getNew.php',
    datatype: "json",
    mtype: "GET",
    colNames:['ID','Name', 'Email'],
    colModel:[
        {name:'id',index:'id', width:55, key: true}, // 标记id为主键,方便jqGrid识别行唯一标识
        {name:'name',index:'name asc', width:100},
        {name:'email',index:'email', width:80, align:"right"},
    ],
    rowNum:10,
    rowList:[10,20,30],
    pager: '#pager2',
    sortname: 'id',
    height:'auto',
    gridview: true,
    viewrecords: true,
    sortorder: "desc",
    caption:"JSON Example",
    editable: true,
    width: 1000,
});

// 配置导航栏及删除选项
$("#list2").navGrid("#pager2", 
    { edit: true, add: true, del: true }, // 开启对应操作按钮
    {}, // 编辑选项,留空使用默认配置
    {}, // 添加选项,留空使用默认配置
    { 
        url: 'deleteRow.php', // 指定处理删除请求的PHP文件
        mtype: 'POST', // 请求方式
        reloadAfterSubmit: true, // 删除完成后自动刷新表格
        serializeDelData: function(postData) {
            // 自定义提交参数,仅传递主键id即可
            return { id: postData.id };
        },
        afterSubmit: function(response) {
            // 解析后端返回结果,返回[操作状态, 提示信息]格式
            var res = JSON.parse(response.responseText);
            return [res.success, res.message];
        }
    }
);

手动触发删除(可选)

如果需要通过自定义按钮或事件触发删除,可直接调用delGridRow方法:

// 示例:删除id为123的数据行
$("#list2").jqGrid('delGridRow', 123, {
    url: 'deleteRow.php',
    mtype: 'POST',
    reloadAfterSubmit: true,
    // 其他配置可参考上方navGrid的删除选项
});

二、PHP后端处理(deleteRow.php)

编写PHP文件接收前端传递的id参数,执行数据库删除操作,并返回JSON格式的处理结果:

<?php
// 数据库连接配置,根据实际环境修改
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';

try {
    // 初始化PDO连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 获取前端传递的删除ID
    $id = $_POST['id'] ?? '';
    if (empty($id)) {
        echo json_encode(['success' => false, 'message' => '缺少删除目标ID']);
        exit;
    }

    // 执行删除预处理语句(防止SQL注入)
    $stmt = $pdo->prepare("DELETE FROM your_table WHERE id = :id");
    $stmt->bindParam(':id', $id, PDO::PARAM_INT);
    $stmt->execute();

    // 根据影响行数返回结果
    if ($stmt->rowCount() > 0) {
        echo json_encode(['success' => true, 'message' => '数据删除成功']);
    } else {
        echo json_encode(['success' => false, 'message' => '未找到对应数据记录']);
    }
} catch(PDOException $e) {
    echo json_encode(['success' => false, 'message' => '数据库错误:' . $e->getMessage()]);
}
?>

关键注意事项

  • 必须在colModel的id列设置key: true,让jqGrid能正确识别每行的唯一标识,确保传递正确的id给后端。
  • 后端使用PDO预处理语句避免SQL注入,同时做好参数校验和异常捕获,保证操作安全性。
  • 删除完成后,后端返回的JSON结果会被前端afterSubmit方法解析,自动显示提示信息并刷新表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:35:19