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

联动动态选择菜单问题:选中division后district二级菜单无法获取数据

问题排查与修复方案

你代码里存在3处核心逻辑不匹配的问题,按以下步骤修改即可:

1. 路由与AJAX请求参数不匹配

你当前路由定义了路径参数{id},但AJAX请求是把division id放在查询参数myID里传递,同时AJAX的url没有替换{id}占位符,会导致请求路径错误。
修复方案(二选一即可,推荐第一种):

方案1:移除路由路径参数(更符合你当前的传参逻辑)
  • 修改路由:
// 移除{id}占位符
Route::get('/getDistrict', 'AddressController@getDistrict');
  • 修改AJAX请求url:
$.ajax({
    // 去掉url里的{id}
    url: '/getDistrict',
    type: 'GET',
    data: {
        myID: division
    },
    // 其余代码不变
})
方案2:使用路由路径参数传递id
  • 修改AJAX请求逻辑,把id拼接到url里,移除data参数:
var division = $('#division').val();
$('#district').html('');
$.ajax({
    // 把division id拼到路径中
    url: '/getDistrict/' + division,
    type: 'GET',
    dataType: "json",
    // 其余代码不变
})

2. 控制器参数接收方式错误,查询逻辑可简化

如果用方案1的传参方式,控制器建议用Laravel官方的Request对象接收参数,同时不需要联表查询,直接查districts表即可:

// 顶部引入Request类
use Illuminate\Http\Request;

function getDistrict(Request $request)
{
    $id = $request->input('myID');
    // 直接查districts表即可,不需要联divisions表
    $res = DB::table('districts')
        ->where('divisions_id', $id)
        ->get();
    return response()->json($res);
}

如果用方案2的传参方式,控制器直接接收路径参数即可:

function getDistrict($id)
{
    $res = DB::table('districts')
        ->where('divisions_id', $id)
        ->get();
    return response()->json($res);
}

3. 可选:优化前端渲染逻辑

把district下拉框的启用逻辑放到循环外,避免重复操作DOM:

success: function(data) {
    $('#district')
        .html('<option value="">Select District</option>')
        .prop('disabled', false)
        .css('background', '#fff');
    $.each(data, function(key, district) {
        $('#district').append('<option value="' + district.id + '">' + district.name + '</option>');
    });
}

兜底排查步骤

如果修改后还是无数据,按以下步骤定位:

  • 打开浏览器开发者工具的「网络」面板,触发division切换,查看AJAX请求的参数、响应状态:
    • 如果是404错误,检查路由是否存在拼写错误、是否有路由前缀
    • 如果响应是空数组,检查数据库districts表的外键字段名是否为divisions_id,对应division id下是否有绑定的district数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:24:06