如何在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
相关产品推荐
相关产品推荐

