下拉结果基于先前下拉菜单中的选择

时间:2019-06-12 14:24:27

标签: javascript ajax laravel-5.8

我需要一些帮助才能在此下拉过滤器上获取更多值。 我有3个下拉菜单,第一个给我所有的“公司”,第二个给我显示该公司的所有“块”,最后一个给我所有该块的房间。

因此,我需要在最后一个下拉列表中显示3个值('id','sala','name')。我该怎么办?

在这里,我如何获取值以填充上一个下拉列表:

public function getAmbienteRev(Request $request)
{
        $ambientes = DB::table("ambientes")
            ->where("bloco_id",$request->bloco_id)
            ->orderByRaw("sala", "asc")
            ->pluck('sala', 'id');
        return response()->json($ambientes);
}

这里是过滤值的代码:

$('#unidade').change(function() {
   var unidadeID = $(this).val();
   if (unidadeID) {
       $.ajax({
           type: "GET",
           url: "{{url('get-bloco-rev')}}?unidade_id=" + unidadeID,
           success: function(res) {
               if (res) {
                   $("#bloco").empty();
                   $("#bloco").append('<option>Selecione o Bloco</option>');
                   $.each(res, function(key, value) {
                       $("#bloco").append('<option value="' + key + '">' + value + '</option>');
                   });

               } else {
                   $("#bloco").empty();
               }
           }
       });
   } else {
       $("#bloco").empty();
       $("#ambiente").empty();
   }
});
$('#bloco').on('change', function() {
   var blocoID = $(this).val();
   if (blocoID) {
       $.ajax({
           type: "GET",
           url: "{{url('get-ambiente-rev')}}?bloco_id=" + blocoID,
           success: function(res) {
               if (res) {
                   $("#ambiente").empty();
                   $("#ambiente").append('<option>Selecione a Sala</option>');
                   $.each(res, function(key, value) {
                       $("#ambiente").append('<option value="' + key + '">' + value + '</option>');
                   });

               } else {
                   $("#ambiente").empty();
               }
           }
       });
   } else {
       $("#ambiente").empty();
   }

 });

我需要这样的东西:

    $.each(res, function(key, value, name) {
                   $("#ambiente").append('<option value="' + key + '">' + value + ' - ' + name +'</option>');
               });

我进行了以下更改:

 ->pluck('name','sala', 'id')

和脚本

$.each(res, function(key, value1, value2) {
                    console.log(res);
                       $("#ambiente").append('<option value="' + key + '">' + value1 + ' - ' + value2 + '</option>');
                   });

console.log(res)

 {101: "Sala de Aula", 102: "Sala de Aula", 103: "Lab de Criatividade e Inovaçăo", 105: "Atelier de Moda 2", 106: "Sala de Desenho 1", 107: "Sala de Aula", 109: "Sala de Aula", 110: "Sala de Aula", 113: "Sala de Aula", 114: "Atelier de Projeto 2 Design", 115: "Atelier de Projeto 3 Design", 116: "Atelier de Projeto 4 Design", 117: "Atelier de Projeto 5 Design", 118: "Atelier de Projeto 6 Design", 201: "Laboratorio de Simulaçăo e Projetos 1", 202: "Laboratório de Simulaçăo e Projetos 2", 203: "Laboratorio de Telecomunicaçőes", 204: "Laboratorio de Eletronica de Potencia", 206: "Sala de Aula", 207: "Laboratório de Eletrônica", 209: "Laboratório de Eletrônica", 210: "Sala de Aula", 213: "Espaço Fotográfico lab.fotogafico", 214: "Sala de Aula", 215: "Sala de Aula", 216: "Sala de Aula", 218: "Sala de Aula", 219: "Sala de Aula", 220: "Sala de Aula", 221: "Sala de Aula", 001: "Laboratório de Computaçăo 01", 002: "Laboratorio de Computaçăo 02", 002A: "Lab. de Informática 7", 002B: "Lab. de Informática 8", 002C: "Lab. de  Informatica 9", …}

但是在下拉列表中显示

<option value="101">Sala de Aula - undefined</option>

1 个答案:

答案 0 :(得分:0)

我使用控制器上的concat解决了该问题。

        $ambientes = DB::table("ambientes")
            ->where("bloco_id",$request->bloco_id)
            ->orderByRaw("sala", "asc")
            ->pluck(DB::raw('CONCAT(sala," - ",name) AS name'),'id');
        return response()->json($ambientes);

tks