按ID获取表格多行数据异常问题排查及代码优化请求
问题修复与代码修改建议
前端Ajax代码修改
假设你当前Ajax未传递目标ID参数,导致后端无法过滤数据,修改如下:
// 示例Ajax代码 $.ajax({ url: '/your-api-endpoint', method: 'GET', // 新增:传递需要查询的ID(如果是多个ID可改为数组,比如 ids: [1,2,3]) data: { id: targetId }, success: function(response) { // 清空表格原有内容 $('#target-table').empty(); // 循环渲染指定列的数据 response.forEach(item => { let row = `<tr> <td>${item.shirshak}</td> <!-- शिर्षक列 --> <td>${item.debit}</td> <!-- डेबिट列 --> <td>${item.credit}</td> <!-- क्रेडिट列 --> </tr>`; $('#target-table').append(row); }); }, error: function(xhr) { console.error('请求失败:', xhr.responseText); } });
- 核心修改:在
data中传入目标ID参数,确保后端能拿到过滤条件 - 表格渲染:只循环生成包含शिर्षक、डेबिट、क्रेडिट三列的行,避免冗余列
后端Laravel Controller代码修改
当前控制器未对接收的ID进行过滤,导致返回全量数据,修改如下:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\YourModel; // 替换为你的模型类 class YourController extends Controller { public function getRowsById(Request $request) { // 验证参数是否存在 $request->validate([ 'id' => 'required|integer', // 如果是多个ID,改为 'ids' => 'required|array' ]); // 根据ID过滤数据(如果是单个ID对应多行,比如关联parent_id) $rows = YourModel::where('parent_id', $request->id)->get(); // 如果是接收多个ID,使用whereIn: // $rows = YourModel::whereIn('id', $request->ids)->get(); // 返回指定字段,减少冗余数据 return $rows->only(['shirshak', 'debit', 'credit']); } }
- 核心修改:添加参数验证,通过
where/whereIn根据传入的ID过滤数据集 - 优化:使用
only()只返回需要的三个字段,减少前端处理量
额外注意事项
- 确保路由配置正确,对应控制器方法,且允许GET/POST请求
- 如果ID是从Modal中获取,需确认
targetId变量已正确获取到Modal中的选中ID - 若返回数据为空,可在后端添加日志输出,排查查询条件是否正确
内容的提问来源于stack exchange,提问作者Rajan Sharma
相关产品推荐
相关产品推荐

