依赖动态选择菜单,第二个菜单没有获取数据

Posted

技术标签:

【中文标题】依赖动态选择菜单,第二个菜单没有获取数据【英文标题】:Dependent dynamic Select menu, The second menu is not getting data 【发布时间】:2022-01-02 13:30:06 【问题描述】:

我正在尝试创建一个从属选择菜单,其中选择分区将在另一个选择菜单上显示其下的区域。我为此使用了ajax。我是ajax的新手。选择菜单如下所示。 enter image description here

选择分区后,将启用分区选择菜单。我面临的问题是该地区显示为空。代码正在获取所选部门的 id,但无法根据 id 选择地区。我的数据库有一对多的关系,一个部门有很多地区。我在这里给出代码。 控制器

$data['divisions'] = DB::table('divisions')->get();
return view('Backend.pages.seller.manage_seller_profile',compact('seller_profile','districts','universities','subs','councilors'),$data);

我传递了很多东西,但这部分我只传递数据变量。

jQuery

$(document).ready(function() 
        $('#division').change(function() 
            var division = $('#division').val();
            $('#district').html('');
            $.ajax(
                url: '/getDistrict/id',
                type: 'GET',
                data: 
                    myID: division
                ,
                dataType: "json",
                success: function(data) 
                    $('#district').append('<option value="">' + "Select District" + '</option>');
                    $.each(data, function(key, district) 

                        $('#district').prop('disabled', false).css('background', '#fff').append('<option value="' + district.id + '">' + district.name + '</option>');
                    );
                ,
                error: function() 

                
            );
        );
    );

可以正确显示除法变量的数据。但后来发生了什么我不确定。

路线

Route::get('/getDistrict/id', 'AddressController@getDistrict');

getDistrict 函数

function getDistrict()
    
        $id = $_GET['myID'];
        $res = DB::table('divisions')
        ->join('districts','divisions.id','=','districts.divisions_id')
        ->where('divisions.id', $id)
        ->get();
        return Response::json($res);
    

感谢任何形式的帮助。我不明白我在哪里搞砸了。

【问题讨论】:

【参考方案1】:

我可以给你一个有效的例子

刀片

先选择

 <select class="select_option" name="category" id="category">
  <option value="">All Categories</option>
   <option value="source">Lead Source  </option>
    <option value="group">Group</option>
     <option value="agent" >Agent</option>
     <option value="status">Status</option>
  </select>

第二次选择

       <select class="form-control" name="selectedValue"id="selected-value">
    </select>

ajax

<script type="text/javascript">
    $("#category").change(function() 
        $.ajax(
            url: " url('/category-data') ?category=" + $(this).val(),
            method: 'GET',
            success: function(data) 
                $('#selected-value').html(data.html);
            
        );
    );
</script>

路线

 Route::get('/category-data','User\LeadController@categoryData');

控制器

    public function categoryData(Request $request)
    


        $id = $request->category; // call the name you are passing instead fo category
        $html = '';
        if ($id) 

            $res = DB::table('divisions')
            ->join('districts','divisions.id','=','districts.divisions_id')
            ->where('divisions.id', $id)
            ->get();

            foreach ($res as $re) 
                $html .= '<option value="' . $re->id . '">' . $re->name . '</option>';
            
          else 
            $html = '<option value="">Select </option>';
        
        return response()->json(['html' => $html]);
    

【讨论】:

感谢您的建议。可以问一下数据库的形成吗?我无法理解这些行。如果 ($category == '组')。我应该使用区表中的 $category== 'division_id' 吗? 来自我的项目。给我秒我给你写函数 我已经更新了答案中的控制器功能

以上是关于依赖动态选择菜单,第二个菜单没有获取数据的主要内容,如果未能解决你的问题,请参考以下文章

第一个下拉菜单自动更改第二个下拉菜单的选项

选择使用 ajax 动态生成的锚标记 ID

Laravel 动态依赖下拉菜单

Rails 4 - 根据嵌套形式的第一个选择菜单中的选择动态填充第二个选择菜单

使用 thymeleaf、spring boot 的动态下拉菜单

Flask 动态依赖下拉列表