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

使用jQuery Ajax获取对应服务点工程师返回[object Object],求排查问题

问题排查与修复方案

1. 控制器返回格式与查询逻辑问题

你当前的控制器代码存在两个关键问题:

  • 先通过User::all()拉取所有用户数据再过滤,属于内存层面的低效操作,应该直接在数据库层面完成筛选
  • 直接返回Laravel集合对象,未转换为前端可解析的JSON格式,导致前端收到的是对象实例,显示为[object Object]

修复后的控制器代码:

return response()->json(User::where('depart', 6)->where('service_point', $request->id)->get(['id', 'name']));

说明:

  • 用User::where()直接在数据库层过滤数据,提升查询效率
  • get(['id', 'name'])仅获取需要的字段(请根据实际表字段调整,比如工程师名称如果是real_name就替换成对应字段)
  • response()->json()将结果转为标准JSON格式返回给前端

2. 前端遍历逻辑错误

当前前端用$.each(data, function(key, value)遍历,但后端返回的是JSON数组(每个元素是工程师对象),这里的value是完整的用户对象,直接拼接会被转为[object Object]。

修复后的前端success回调:

success: function(data) {
    $('#' + name).empty();
    $('#' + name).append('<option>- Choose Option -</option>');
    $.each(data, function(index, user) {
        // 注意user.id和user.name要和后端返回的字段严格对应
        $('#' + name).append('<option value="' + user.id + '">' + user.name + '</option>');
    });
}

说明:

  • 遍历JSON数组时,每个user是单个工程师对象,取其id作为option的value,名称作为显示文本
  • 若你的用户表中工程师标识或名称字段不是id/name,请替换为实际字段名

3. 额外验证点

  • 确认users表中存在service_point字段,且前端传递的id(服务点ID)能被后端$request->id正确接收
  • 打开浏览器开发者工具的Network标签,查看Ajax请求的响应内容,确认后端返回的JSON格式是否符合预期
  • 确保页面中存在id="engineer"的select标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:00:17